Add database logic
This commit is contained in:
@@ -1,13 +1,16 @@
|
|||||||
package page
|
package page
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"math"
|
"math"
|
||||||
|
"path/filepath"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/go-gl/gl/v3.3-core/gl"
|
"github.com/go-gl/gl/v3.3-core/gl"
|
||||||
"github.com/go-gl/mathgl/mgl32"
|
"github.com/go-gl/mathgl/mgl32"
|
||||||
"github.com/veandco/go-sdl2/sdl"
|
"github.com/veandco/go-sdl2/sdl"
|
||||||
|
"gorm.io/gorm"
|
||||||
"rhemawavetech.com/rhemawave/internal/colors"
|
"rhemawavetech.com/rhemawave/internal/colors"
|
||||||
"rhemawavetech.com/rhemawave/internal/db"
|
"rhemawavetech.com/rhemawave/internal/db"
|
||||||
"rhemawavetech.com/rhemawave/internal/fontManager"
|
"rhemawavetech.com/rhemawave/internal/fontManager"
|
||||||
@@ -17,20 +20,20 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
var AudioFileList = []db.AudioFile{
|
var AudioFileList = []db.AudioFile{
|
||||||
{ID: 1, Name: "174 Hz", Path: "174Hz.wav", Selected: false},
|
{ID: 14, Name: "Original Audio", Path: "OriginalAudio.wav", Selected: false, Order: 1},
|
||||||
{ID: 2, Name: "396 Hz", Path: "396Hz.wav", Selected: false},
|
{ID: 1, Name: "174 Hz", Path: "174Hz.wav", Selected: false, Order: 2},
|
||||||
{ID: 3, Name: "417 Hz", Path: "417Hz.wav", Selected: false},
|
{ID: 2, Name: "396 Hz", Path: "396Hz.wav", Selected: false, Order: 3},
|
||||||
{ID: 4, Name: "432 Hz", Path: "432Hz.wav", Selected: false},
|
{ID: 3, Name: "417 Hz", Path: "417Hz.wav", Selected: false, Order: 4},
|
||||||
{ID: 5, Name: "639 Hz", Path: "639Hz.wav", Selected: false},
|
{ID: 4, Name: "432 Hz", Path: "432Hz.wav", Selected: false, Order: 5},
|
||||||
{ID: 6, Name: "741 Hz", Path: "741Hz.wav", Selected: false},
|
{ID: 5, Name: "639 Hz", Path: "639Hz.wav", Selected: false, Order: 6},
|
||||||
{ID: 7, Name: "852 Hz", Path: "852Hz.wav", Selected: false},
|
{ID: 6, Name: "741 Hz", Path: "741Hz.wav", Selected: false, Order: 7},
|
||||||
{ID: 8, Name: "963 Hz", Path: "963Hz.wav", Selected: false},
|
{ID: 7, Name: "852 Hz", Path: "852Hz.wav", Selected: false, Order: 8},
|
||||||
{ID: 9, Name: "1111 Hz", Path: "1111Hz.wav", Selected: false},
|
{ID: 8, Name: "963 Hz", Path: "963Hz.wav", Selected: false, Order: 9},
|
||||||
{ID: 10, Name: "14 Hz Binaural Beat", Path: "14Hz_Binaural.wav", Selected: false},
|
{ID: 9, Name: "1111 Hz", Path: "1111Hz.wav", Selected: false, Order: 10},
|
||||||
{ID: 11, Name: "40 Hz Binaural Beat", Path: "40Hz_Binaural.wav", Selected: false},
|
{ID: 10, Name: "14 Hz Binaural Beat", Path: "14Hz_Binaural.wav", Selected: false, Order: 11},
|
||||||
{ID: 12, Name: "Alpha Waves", Path: "AlphaWaves.wav", Selected: false},
|
{ID: 11, Name: "40 Hz Binaural Beat", Path: "40Hz_Binaural.wav", Selected: false, Order: 12},
|
||||||
{ID: 13, Name: "Pineal Gland", Path: "PinealGland.wav", Selected: false},
|
{ID: 12, Name: "Alpha Waves", Path: "AlphaWaves.wav", Selected: false, Order: 13},
|
||||||
{ID: 14, Name: "Original Audio", Path: "OriginalAudio.wav", Selected: false},
|
{ID: 13, Name: "Pineal Gland", Path: "PinealGland.wav", Selected: false, Order: 14},
|
||||||
}
|
}
|
||||||
|
|
||||||
const (
|
const (
|
||||||
@@ -207,6 +210,7 @@ func (p *AudioOptions) buildTrackItems() error {
|
|||||||
|
|
||||||
if len(audioFileList) == 0 {
|
if len(audioFileList) == 0 {
|
||||||
audioFileList = AudioFileList
|
audioFileList = AudioFileList
|
||||||
|
p.Context.DbPtr.Save(&audioFileList)
|
||||||
}
|
}
|
||||||
|
|
||||||
for i := range p.trackItems {
|
for i := range p.trackItems {
|
||||||
@@ -476,11 +480,26 @@ func (p *AudioOptions) onTrackSelected(index int, entry db.AudioFile) {
|
|||||||
p.layout()
|
p.layout()
|
||||||
|
|
||||||
// Create file names and paths
|
// Create file names and paths
|
||||||
// Set Selected
|
// Set newly selected entry as Selected
|
||||||
entry.Selected = true
|
entry.Selected = true
|
||||||
// Set path
|
// Set path
|
||||||
if !strings.Contains(entry.Path, ".local/") {
|
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
|
// Save it to the database
|
||||||
if err := p.Context.DbPtr.Save(&entry).Error; err != nil {
|
if err := p.Context.DbPtr.Save(&entry).Error; err != nil {
|
||||||
|
|||||||
Reference in New Issue
Block a user