Files
sundynix-pets/pets-be/internal/database/seed.go
T
Blizzard 4f6f0f632e refactor(be): 文章内容从代码里移出,改为直接同步数据库
几百字的正文塞进 Go 源文件,既看不清 diff 也没法在后台改完再同步
回来——内容和代码本来就是两条生命周期。

- 删掉 articles_more.go(16 篇)
- seed.go 只保留 seedAdmin,去掉 seedArticles / builtinArticles /
  backfillArticleContent(后者是给早期无正文文章补内容的一次性逻辑,
  已无意义)

数据已经在库里,删代码不影响:预生产 20 篇文章原样在,小程序端照常
读得到。上线时手动同步这张表即可。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-29 13:53:35 +08:00

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
}