package database import ( "golang.org/x/crypto/bcrypt" "gorm.io/gorm" "github.com/sundynix/pets-be/internal/config" "github.com/sundynix/pets-be/internal/model" ) // Seed 初始化种子数据:只建管理员账号。 // 文章这类内容数据不放代码里——正文几百字塞进 Go 源文件,既看不清也 // 没法在后台改完再同步回来。上线时直接同步数据库。 func Seed(db *gorm.DB, cfg *config.Config) error { return seedAdmin(db, cfg) } func seedAdmin(db *gorm.DB, cfg *config.Config) error { var count int64 if err := db.Model(&model.Admin{}).Where("username = ?", cfg.Admin.Username).Count(&count).Error; err != nil { return err } if count > 0 { return nil } hash, err := bcrypt.GenerateFromPassword([]byte(cfg.Admin.Password), bcrypt.DefaultCost) if err != nil { return err } return db.Create(&model.Admin{ Username: cfg.Admin.Username, PasswordHash: string(hash), Role: "admin", }).Error }