Files
bibliomane/internal/db/init.go
2025-09-17 18:55:33 +02:00

44 lines
846 B
Go

package db
import (
"fmt"
"log"
"os"
"gorm.io/driver/sqlite"
"gorm.io/gorm"
"git.artlef.fr/PersonalLibraryManager/internal/model"
)
func Initdb(databaseDir string) *gorm.DB {
createDbFolderIfMissing(databaseDir)
db, err := gorm.Open(
sqlite.Open(
fmt.Sprintf(
"%s/plm.db", databaseDir)), &gorm.Config{})
if err != nil {
log.Fatal(err)
}
// Migrate the schema
db.AutoMigrate(&model.Book{})
return db
}
func createDbFolderIfMissing(databaseDir string) {
_, openFileErr := os.Open(databaseDir)
if os.IsNotExist(openFileErr) {
createNonExistingDbFolder(databaseDir)
} else if openFileErr != nil {
log.Fatal(openFileErr)
}
}
func createNonExistingDbFolder(databaseDir string) {
log.Printf("Creating missing folder %s\n", databaseDir)
err := os.MkdirAll(databaseDir, 0700)
if err != nil {
log.Fatal(err)
}
}