package initcmd import ( "fmt" "sunhpc/internal/middler/auth" "sunhpc/pkg/database" "sunhpc/pkg/logger" "github.com/spf13/cobra" ) func NewInitDBCmd() *cobra.Command { var force bool cmd := &cobra.Command{ Use: "db", Short: "初始化数据库", Long: `初始化SQLite数据库,创建所有表结构和默认数据。 示例: sunhpc init db # 初始化数据库 sunhpc init db --force # 强制重新初始化`, RunE: func(cmd *cobra.Command, args []string) error { if err := auth.RequireRoot(); err != nil { return err } logger.Debug("执行数据库初始化...") // 初始化数据库 db, err := database.GetDB() if err != nil { return fmt.Errorf("数据库连接失败: %w", err) } defer db.Close() if err := database.InitTables(db, force); err != nil { logger.Debug(err) return err } // 测试数据库连接 if err := database.TestNodeInsert(db); err != nil { return fmt.Errorf("数据库测试失败: %w", err) } return nil }, } cmd.Flags().BoolVarP( &force, "force", "f", false, "强制重新初始化") return cmd }