add basic demo data
This commit is contained in:
@@ -11,7 +11,7 @@ import (
|
||||
"git.artlef.fr/PersonalLibraryManager/internal/model"
|
||||
)
|
||||
|
||||
func Initdb(databaseDir string) *gorm.DB {
|
||||
func Initdb(databaseDir string, demoDataPath string) *gorm.DB {
|
||||
createDbFolderIfMissing(databaseDir)
|
||||
db, err := gorm.Open(
|
||||
sqlite.Open(
|
||||
@@ -22,9 +22,23 @@ func Initdb(databaseDir string) *gorm.DB {
|
||||
}
|
||||
// Migrate the schema
|
||||
db.AutoMigrate(&model.Book{})
|
||||
var book model.Book
|
||||
queryResult := db.Limit(1).Find(&book)
|
||||
if queryResult.RowsAffected == 0 && demoDataPath != "" {
|
||||
migrateSchema(db, demoDataPath)
|
||||
}
|
||||
return db
|
||||
}
|
||||
|
||||
func migrateSchema(db *gorm.DB, demoDataPath string) {
|
||||
log.Printf("Loading demo data file %s\n", demoDataPath)
|
||||
data, err := os.ReadFile(demoDataPath)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
db.Exec(string(data))
|
||||
}
|
||||
|
||||
func createDbFolderIfMissing(databaseDir string) {
|
||||
_, openFileErr := os.Open(databaseDir)
|
||||
if os.IsNotExist(openFileErr) {
|
||||
|
||||
Reference in New Issue
Block a user