Add database logic
This commit is contained in:
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user