refactor: simplify dataset initialization

This commit is contained in:
2026-07-23 22:44:04 +08:00
parent bc7fa40995
commit af8de3eff6
5 changed files with 98 additions and 329 deletions

View File

@@ -12,25 +12,34 @@ const (
rootRole = "root"
)
// InitUser creates the default root account when the user table is empty.
func InitUser(database *gorm.DB) error {
// InitUser returns the existing root user or creates and returns it when the user table is empty.
func InitUser(database *gorm.DB) (*models.SaUser, error) {
var count int64
if err := database.Model(&models.SaUser{}).Count(&count).Error; err != nil {
return err
return nil, err
}
if count > 0 {
return nil
var user models.SaUser
if err := database.Where("email = ? AND role = ?", rootUsername, rootRole).
First(&user).Error; err != nil {
return nil, err
}
return &user, nil
}
passwordHash, err := bcrypt.GenerateFromPassword([]byte(rootPassword), bcrypt.DefaultCost)
if err != nil {
return err
return nil, err
}
return database.Create(&models.SaUser{
user := &models.SaUser{
Email: rootUsername,
DisplayName: rootUsername,
PasswordHash: string(passwordHash),
Role: rootRole,
}).Error
}
if err := database.Create(user).Error; err != nil {
return nil, err
}
return user, nil
}