4f6f0f632e
几百字的正文塞进 Go 源文件,既看不清 diff 也没法在后台改完再同步 回来——内容和代码本来就是两条生命周期。 - 删掉 articles_more.go(16 篇) - seed.go 只保留 seedAdmin,去掉 seedArticles / builtinArticles / backfillArticleContent(后者是给早期无正文文章补内容的一次性逻辑, 已无意义) 数据已经在库里,删代码不影响:预生产 20 篇文章原样在,小程序端照常 读得到。上线时手动同步这张表即可。 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
36 lines
976 B
Go
36 lines
976 B
Go
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
|
|
}
|