package initdb import ( "senlinai-agent/backend/internal/models" "golang.org/x/crypto/bcrypt" "gorm.io/gorm" ) const ( rootUsername = "root" rootPassword = "123456" rootRole = "root" ) // 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 var user models.SaUser database.Model(&models.SaUser{}).Where("email=?", rootUsername).First(&user).Count(&count) if count == 0 { passwordHash, err := bcrypt.GenerateFromPassword([]byte(rootPassword), bcrypt.DefaultCost) if err != nil { return nil, err } user = models.SaUser{ Email: rootUsername, DisplayName: rootUsername, PasswordHash: string(passwordHash), Role: rootRole, } if err := database.Create(&user).Error; err != nil { return nil, err } return &user, nil } return &user, nil }