Files
platforms/backend/api/cmd/cli/main.go
2026-07-28 22:42:21 +08:00

67 lines
1.5 KiB
Go

// 平台 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 <version|resource-contract|mock-data>")
}
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
}