package initcmd import ( "sunhpc/internal/auth" "sunhpc/internal/db" "sunhpc/internal/log" "github.com/spf13/cobra" ) func NewDatabaseCmd() *cobra.Command { var force bool cmd := &cobra.Command{ Use: "database", Short: "初始化数据库", Long: `初始化SQLite数据库,创建所有表结构和默认数据。 示例: sunhpc init database # 初始化数据库 sunhpc init database --force # 强制重新初始化`, Annotations: map[string]string{ "skip-db-check": "true", // 标记此命令跳过数据库检查 }, RunE: func(cmd *cobra.Command, args []string) error { if err := auth.RequireRoot(); err != nil { return err } log.Info("初始化数据库...") dbInst := db.MustGetDB() // panic if fail (ok for CLI tool) if err := dbInst.InitSchema(force); err != nil { return err } log.Info("数据库初始化完成") return nil }, } cmd.Flags().BoolVarP(&force, "force", "f", false, "强制重新初始化") return cmd }