// 平台 API 命令行工具。 package main import ( "fmt" "os" "git.apinb.com/bsm-sdk/core/database" "git.apinb.com/heqiapp/platforms/backend/api/internal/config" "git.apinb.com/heqiapp/platforms/backend/api/internal/initdb" "git.apinb.com/heqiapp/platforms/backend/api/internal/seed" ) const serviceKey = "heqi" func main() { if len(os.Args) < 2 { printUsage() os.Exit(1) } switch os.Args[1] { case "version": fmt.Println("platform-cli 0.1.0") case "resource-contract": if err := writeResourceContract(os.Stdout); err != nil { fmt.Fprintln(os.Stderr, err) os.Exit(1) } case "mock-data": if err := writeMockData(); err != nil { fmt.Fprintln(os.Stderr, err) os.Exit(1) } fmt.Println("mock data written successfully") default: fmt.Fprintf(os.Stderr, "unknown command: %s\n", os.Args[1]) printUsage() os.Exit(1) } } func printUsage() { fmt.Fprintln(os.Stderr, "usage: platform-cli ") } func writeMockData() error { config.New(serviceKey) if config.Spec.Databases == nil { return fmt.Errorf("database configuration is required") } databaseService, err := database.NewDatabase( config.Spec.Databases.Driver, config.Spec.Databases.Source, nil, ) if err != nil { return fmt.Errorf("connect database: %w", err) } if err := initdb.New(databaseService); err != nil { return fmt.Errorf("initialize platform data: %w", err) } if err := seed.MockData(databaseService); err != nil { return fmt.Errorf("write mock data: %w", err) } return nil }