Use config from .env and update api
This commit is contained in:
@@ -2,8 +2,10 @@ package database
|
||||
|
||||
import (
|
||||
"log"
|
||||
"sheetless-server/config"
|
||||
"sheetless-server/models"
|
||||
|
||||
"golang.org/x/crypto/bcrypt"
|
||||
"gorm.io/driver/sqlite"
|
||||
"gorm.io/gorm"
|
||||
)
|
||||
@@ -12,16 +14,59 @@ var DB *gorm.DB
|
||||
|
||||
func InitDatabase() {
|
||||
var err error
|
||||
|
||||
DB, err = gorm.Open(sqlite.Open("sheetless.db"), &gorm.Config{})
|
||||
if err != nil {
|
||||
log.Fatal("Failed to connect to database:", err)
|
||||
}
|
||||
|
||||
tables, err := DB.Migrator().GetTables()
|
||||
if err != nil {
|
||||
log.Fatal("Failed to list tables of database:", err)
|
||||
}
|
||||
isNewDatabase := len(tables) == 0
|
||||
|
||||
// Auto migrate the schema
|
||||
err = DB.AutoMigrate(&models.User{}, &models.Sheet{}, &models.Composer{})
|
||||
if err != nil {
|
||||
log.Fatal("Failed to migrate database:", err)
|
||||
}
|
||||
|
||||
if isNewDatabase {
|
||||
createDefaultAdminUser()
|
||||
}
|
||||
|
||||
log.Println("Database connected and migrated successfully")
|
||||
}
|
||||
|
||||
func createDefaultAdminUser() {
|
||||
// Check if admin user already exists
|
||||
var existingUser models.User
|
||||
err := DB.Where("email = ?", config.AppConfig.Admin.Email).First(&existingUser).Error
|
||||
if err == nil {
|
||||
// Admin user already exists, don't recreate
|
||||
log.Printf("Admin user already exists: %s", config.AppConfig.Admin.Email)
|
||||
return
|
||||
}
|
||||
|
||||
// Hash the admin password
|
||||
hashedPassword, err := bcrypt.GenerateFromPassword([]byte(config.AppConfig.Admin.Password), bcrypt.DefaultCost)
|
||||
if err != nil {
|
||||
log.Printf("Failed to hash admin password: %v", err)
|
||||
return
|
||||
}
|
||||
|
||||
// Create admin user
|
||||
adminUser := models.User{
|
||||
Username: "admin",
|
||||
Email: config.AppConfig.Admin.Email,
|
||||
Password: string(hashedPassword),
|
||||
}
|
||||
|
||||
if err := DB.Create(&adminUser).Error; err != nil {
|
||||
log.Printf("Failed to create admin user: %v", err)
|
||||
return
|
||||
}
|
||||
|
||||
log.Printf("Default admin user created with email: %s", config.AppConfig.Admin.Email)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user