Add database logic

This commit is contained in:
NeilClack
2026-06-18 08:02:21 -05:00
parent 74874f97c5
commit 6b48679537
+35 -16
View File
@@ -1,13 +1,16 @@
package page
import (
"errors"
"fmt"
"math"
"path/filepath"
"strings"
"github.com/go-gl/gl/v3.3-core/gl"
"github.com/go-gl/mathgl/mgl32"
"github.com/veandco/go-sdl2/sdl"
"gorm.io/gorm"
"rhemawavetech.com/rhemawave/internal/colors"
"rhemawavetech.com/rhemawave/internal/db"
"rhemawavetech.com/rhemawave/internal/fontManager"
@@ -17,20 +20,20 @@ import (
)
var AudioFileList = []db.AudioFile{
{ID: 1, Name: "174 Hz", Path: "174Hz.wav", Selected: false},
{ID: 2, Name: "396 Hz", Path: "396Hz.wav", Selected: false},
{ID: 3, Name: "417 Hz", Path: "417Hz.wav", Selected: false},
{ID: 4, Name: "432 Hz", Path: "432Hz.wav", Selected: false},
{ID: 5, Name: "639 Hz", Path: "639Hz.wav", Selected: false},
{ID: 6, Name: "741 Hz", Path: "741Hz.wav", Selected: false},
{ID: 7, Name: "852 Hz", Path: "852Hz.wav", Selected: false},
{ID: 8, Name: "963 Hz", Path: "963Hz.wav", Selected: false},
{ID: 9, Name: "1111 Hz", Path: "1111Hz.wav", Selected: false},
{ID: 10, Name: "14 Hz Binaural Beat", Path: "14Hz_Binaural.wav", Selected: false},
{ID: 11, Name: "40 Hz Binaural Beat", Path: "40Hz_Binaural.wav", Selected: false},
{ID: 12, Name: "Alpha Waves", Path: "AlphaWaves.wav", Selected: false},
{ID: 13, Name: "Pineal Gland", Path: "PinealGland.wav", Selected: false},
{ID: 14, Name: "Original Audio", Path: "OriginalAudio.wav", Selected: false},
{ID: 14, Name: "Original Audio", Path: "OriginalAudio.wav", Selected: false, Order: 1},
{ID: 1, Name: "174 Hz", Path: "174Hz.wav", Selected: false, Order: 2},
{ID: 2, Name: "396 Hz", Path: "396Hz.wav", Selected: false, Order: 3},
{ID: 3, Name: "417 Hz", Path: "417Hz.wav", Selected: false, Order: 4},
{ID: 4, Name: "432 Hz", Path: "432Hz.wav", Selected: false, Order: 5},
{ID: 5, Name: "639 Hz", Path: "639Hz.wav", Selected: false, Order: 6},
{ID: 6, Name: "741 Hz", Path: "741Hz.wav", Selected: false, Order: 7},
{ID: 7, Name: "852 Hz", Path: "852Hz.wav", Selected: false, Order: 8},
{ID: 8, Name: "963 Hz", Path: "963Hz.wav", Selected: false, Order: 9},
{ID: 9, Name: "1111 Hz", Path: "1111Hz.wav", Selected: false, Order: 10},
{ID: 10, Name: "14 Hz Binaural Beat", Path: "14Hz_Binaural.wav", Selected: false, Order: 11},
{ID: 11, Name: "40 Hz Binaural Beat", Path: "40Hz_Binaural.wav", Selected: false, Order: 12},
{ID: 12, Name: "Alpha Waves", Path: "AlphaWaves.wav", Selected: false, Order: 13},
{ID: 13, Name: "Pineal Gland", Path: "PinealGland.wav", Selected: false, Order: 14},
}
const (
@@ -207,6 +210,7 @@ func (p *AudioOptions) buildTrackItems() error {
if len(audioFileList) == 0 {
audioFileList = AudioFileList
p.Context.DbPtr.Save(&audioFileList)
}
for i := range p.trackItems {
@@ -476,11 +480,26 @@ func (p *AudioOptions) onTrackSelected(index int, entry db.AudioFile) {
p.layout()
// Create file names and paths
// Set Selected
// Set newly selected entry as Selected
entry.Selected = true
// Set path
if !strings.Contains(entry.Path, ".local/") {
entry.Path = p.Context.CfgPtr.AssetsDir + "audio" + entry.Path
entry.Path = filepath.Join(p.Context.CfgPtr.AssetsDir, "audio/", entry.Path)
}
// Clear previously selected.
var previouslySelectedAudio db.AudioFile
if err := p.Context.DbPtr.Where("Selected = ?", true).First(&previouslySelectedAudio).Error; err != nil {
if errors.Is(err, gorm.ErrRecordNotFound) {
logger.Info("No audio previously selected")
} else {
logger.Error("Unable to fetch previously selected audio from database %s", err)
}
} else {
previouslySelectedAudio.Selected = false
if err = p.Context.DbPtr.Save(&previouslySelectedAudio).Error; err != nil {
logger.Error("Unable to update selected audio: %v", err)
return
}
}
// Save it to the database
if err := p.Context.DbPtr.Save(&entry).Error; err != nil {