feat: init commit
This commit is contained in:
@@ -0,0 +1,36 @@
|
||||
package database
|
||||
|
||||
import (
|
||||
"gorm.io/driver/sqlite"
|
||||
"gorm.io/gorm"
|
||||
"gorm.io/gorm/schema"
|
||||
)
|
||||
|
||||
func KickoffDatabase() (*gorm.DB, error) {
|
||||
db, err := gorm.Open(sqlite.Open("garden.db"), &gorm.Config{
|
||||
NamingStrategy: schema.NamingStrategy{
|
||||
SingularTable: true,
|
||||
},
|
||||
})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if err := db.AutoMigrate(&AppState{}); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if err := db.AutoMigrate(&Files{}); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// create the first row if it does not exist yet
|
||||
if err := db.FirstOrCreate(&AppState{}, AppState{
|
||||
ID: 1,
|
||||
Mode: "unspecified",
|
||||
Running: false,
|
||||
}).Error; err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return db, nil
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
package database
|
||||
|
||||
type AppState struct {
|
||||
ID int `gorm:"primaryKey"`
|
||||
// Mode =
|
||||
// 0: unspecified
|
||||
// 1: video
|
||||
// 2: presentation
|
||||
// 3: internet URL
|
||||
Mode string
|
||||
Running bool
|
||||
}
|
||||
|
||||
type Files struct {
|
||||
ID int `gorm:"primaryKey"`
|
||||
Mode string
|
||||
Filename string
|
||||
Filepath string
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
package database
|
||||
|
||||
import (
|
||||
"path/filepath"
|
||||
|
||||
"gorm.io/gorm"
|
||||
)
|
||||
|
||||
func GetAppState(db *gorm.DB) (AppState, error) {
|
||||
var state AppState
|
||||
|
||||
return state, db.First(&state).Error
|
||||
}
|
||||
|
||||
func GetFiles(db *gorm.DB) ([]Files, error) {
|
||||
var files []Files
|
||||
|
||||
return files, db.Find(&files).Error
|
||||
}
|
||||
|
||||
func RegisterFile(db *gorm.DB, category, fullPath string) error {
|
||||
file := Files{
|
||||
Mode: category,
|
||||
Filename: filepath.Base(fullPath),
|
||||
Filepath: fullPath,
|
||||
}
|
||||
|
||||
return db.Create(&file).Error
|
||||
}
|
||||
Reference in New Issue
Block a user