Reorganize & Add DB Bootstrapping
This commit is contained in:
@@ -1,13 +1,12 @@
|
||||
package query
|
||||
|
||||
import (
|
||||
"log"
|
||||
"path"
|
||||
// "time"
|
||||
|
||||
"gorm.io/gorm"
|
||||
"gorm.io/gorm/logger"
|
||||
"gorm.io/driver/sqlite"
|
||||
log "github.com/sirupsen/logrus"
|
||||
|
||||
"reichard.io/imagini/internal/config"
|
||||
"reichard.io/imagini/internal/models"
|
||||
@@ -24,18 +23,39 @@ func NewDB(c *config.Config) *gorm.DB {
|
||||
dbLocation := path.Join(c.ConfigPath, "imagini.db")
|
||||
db, _ = gorm.Open(sqlite.Open(dbLocation), gormConfig)
|
||||
} else {
|
||||
log.Fatal("ERROR: Unsupported Database")
|
||||
log.Fatal("Unsupported Database")
|
||||
}
|
||||
|
||||
// Initialize Database
|
||||
// Initialize database
|
||||
db.AutoMigrate(&models.ServerSetting{})
|
||||
db.AutoMigrate(&models.User{})
|
||||
db.AutoMigrate(&models.MediaItem{})
|
||||
db.AutoMigrate(&models.Tag{})
|
||||
db.AutoMigrate(&models.Album{})
|
||||
|
||||
// Determine whether to bootstrap
|
||||
var count int64
|
||||
db.Model(&models.User{}).Count(&count)
|
||||
if count == 0 {
|
||||
bootstrapDatabase(db)
|
||||
}
|
||||
|
||||
return db
|
||||
}
|
||||
|
||||
func bootstrapDatabase(db *gorm.DB) {
|
||||
log.Info("[query] Bootstrapping database.")
|
||||
err := CreateUser(db, models.User{
|
||||
Username: "admin",
|
||||
Password: "admin",
|
||||
AuthType: "Local",
|
||||
})
|
||||
|
||||
if err != nil {
|
||||
log.Fatal("[query] Unable to bootstrap database.")
|
||||
}
|
||||
}
|
||||
|
||||
func ItemsFromAlbum(db *gorm.DB, user models.User, album models.Album) []models.MediaItem {
|
||||
var mediaItems []models.MediaItem
|
||||
// db.Table("media_albums").
|
||||
@@ -1,13 +1,29 @@
|
||||
package query
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"gorm.io/gorm"
|
||||
"golang.org/x/crypto/bcrypt"
|
||||
log "github.com/sirupsen/logrus"
|
||||
|
||||
"reichard.io/imagini/internal/models"
|
||||
)
|
||||
|
||||
func CreateUser (db *gorm.DB, user models.User) error {
|
||||
err := db.Create(&user).Error
|
||||
return err
|
||||
func CreateUser(db *gorm.DB, user models.User) error {
|
||||
log.Info("[query] Creating user: ", user.Username)
|
||||
_, err := User(db, user)
|
||||
if !errors.Is(err, gorm.ErrRecordNotFound) {
|
||||
log.Warn("[query] User already exists: ", user.Username)
|
||||
return errors.New("User already exists")
|
||||
}
|
||||
|
||||
hashedPassword, err := bcrypt.GenerateFromPassword([]byte(user.Password), bcrypt.DefaultCost)
|
||||
if err != nil {
|
||||
log.Error(err)
|
||||
return err
|
||||
}
|
||||
user.Password = string(hashedPassword)
|
||||
return db.Create(&user).Error
|
||||
}
|
||||
|
||||
func User (db *gorm.DB, user models.User) (models.User, error) {
|
||||
|
||||
Reference in New Issue
Block a user