Initial commit
This commit is contained in:
commit
141baa4e76
45 files changed
+4021
No files matched your search
@@ -0,0 +1,30 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"os"
|
||||
"os/exec"
|
||||
|
||||
"github.com/spf13/cobra"
|
||||
)
|
||||
|
||||
var genCmd = &cobra.Command{
|
||||
Use: "gen",
|
||||
Short: "生成 Ent ORM 的模板代码",
|
||||
Run: func(cmd *cobra.Command, args []string) {
|
||||
println("正在运行 go generate ./internal/ent...")
|
||||
|
||||
c := exec.Command("go", "generate", "./internal/ent")
|
||||
c.Stdout = os.Stdout
|
||||
c.Stderr = os.Stderr
|
||||
if err := c.Run(); err != nil {
|
||||
println("代码生成失败: " + err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
println("Ent ORM 代码生成成功!")
|
||||
},
|
||||
}
|
||||
|
||||
func init() {
|
||||
rootCmd.AddCommand(genCmd)
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"os"
|
||||
)
|
||||
|
||||
func main() {
|
||||
if err := rootCmd.Execute(); err != nil {
|
||||
fmt.Println(err)
|
||||
os.Exit(1)
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"context"
|
||||
"ent-scaffold/internal/db"
|
||||
"ent-scaffold/internal/global"
|
||||
|
||||
"github.com/spf13/cobra"
|
||||
"go.uber.org/zap"
|
||||
)
|
||||
|
||||
var migrateCmd = &cobra.Command{
|
||||
Use: "migrate",
|
||||
Short: "执行数据库 Schema 自动迁移",
|
||||
Run: func(cmd *cobra.Command, args []string) {
|
||||
err := db.Init(global.Config.Database.Driver, global.Config.Database.Dsn())
|
||||
if err != nil {
|
||||
global.Log.Fatal("连接数据库失败", zap.Error(err))
|
||||
}
|
||||
defer db.Close()
|
||||
global.Log.Info("开始执行数据库 Schema 自动迁移...")
|
||||
|
||||
ctx := context.Background()
|
||||
// 直接使用 db.Client 跨包调用
|
||||
if err := db.Client.Schema.Create(ctx); err != nil {
|
||||
global.Log.Fatal("Schema 迁移失败", zap.Error(err))
|
||||
}
|
||||
|
||||
global.Log.Info("数据库 Schema 迁移执行完毕!")
|
||||
},
|
||||
}
|
||||
|
||||
func init() {
|
||||
rootCmd.AddCommand(migrateCmd)
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"ent-scaffold/internal/conf"
|
||||
"ent-scaffold/internal/global"
|
||||
"ent-scaffold/internal/logger"
|
||||
|
||||
"github.com/spf13/cobra"
|
||||
)
|
||||
|
||||
var cfgFile string
|
||||
|
||||
var rootCmd = &cobra.Command{
|
||||
Use: "ent-scaffold",
|
||||
Short: "ent-scaffold 命令行脚手架服务",
|
||||
PersistentPreRunE: func(cmd *cobra.Command, args []string) error {
|
||||
cfg, err := conf.LoadConfig(cfgFile)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
global.Config = cfg
|
||||
log, err := logger.Init(cfg.Logger)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
global.Log = log
|
||||
return nil
|
||||
},
|
||||
}
|
||||
|
||||
func init() {
|
||||
rootCmd.PersistentFlags().StringVarP(&cfgFile, "config", "c", "configs/config.yaml", "指定 YAML 配置文件路径")
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"ent-scaffold/internal/db"
|
||||
"ent-scaffold/internal/global"
|
||||
"ent-scaffold/internal/server"
|
||||
|
||||
"github.com/spf13/cobra"
|
||||
"go.uber.org/zap"
|
||||
)
|
||||
|
||||
var serverCmd = &cobra.Command{
|
||||
Use: "server",
|
||||
Short: "启动 Web API 接口服务",
|
||||
Run: func(cmd *cobra.Command, args []string) {
|
||||
// 初始化 db 包
|
||||
err := db.Init(global.Config.Database.Driver, global.Config.Database.Dsn())
|
||||
if err != nil {
|
||||
global.Log.Fatal("数据库连接失败", zap.Error(err))
|
||||
}
|
||||
defer db.Close()
|
||||
|
||||
global.Log.Info("数据库初始化成功,正在启动 Web 服务...")
|
||||
// 启动 Gin 服务
|
||||
server.Run()
|
||||
},
|
||||
}
|
||||
|
||||
func init() {
|
||||
rootCmd.AddCommand(serverCmd)
|
||||
}
|
||||
@@ -0,0 +1,63 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"bufio"
|
||||
"context"
|
||||
"ent-scaffold/internal/db"
|
||||
"ent-scaffold/internal/global"
|
||||
"fmt"
|
||||
"os"
|
||||
"strings"
|
||||
|
||||
"github.com/spf13/cobra"
|
||||
"go.uber.org/zap"
|
||||
)
|
||||
|
||||
var userCmd = &cobra.Command{
|
||||
Use: "user",
|
||||
Short: "后台用户管理工具",
|
||||
}
|
||||
|
||||
var userCreateCmd = &cobra.Command{
|
||||
Use: "create",
|
||||
Short: "交互式创建一个管理员用户",
|
||||
Run: func(cmd *cobra.Command, args []string) {
|
||||
err := db.Init(global.Config.Database.Driver, global.Config.Database.Dsn())
|
||||
if err != nil {
|
||||
global.Log.Fatal("连接数据库失败", zap.Error(err))
|
||||
}
|
||||
defer db.Close()
|
||||
|
||||
reader := bufio.NewReader(os.Stdin)
|
||||
fmt.Print("请输入用户名: ")
|
||||
username, _ := reader.ReadString('\n')
|
||||
username = strings.TrimSpace(username)
|
||||
fmt.Print("请输入密码: ")
|
||||
password, _ := reader.ReadString('\n')
|
||||
password = strings.TrimSpace(password)
|
||||
if username == "" || password == "" {
|
||||
fmt.Println("用户名和密码不能为空")
|
||||
return
|
||||
}
|
||||
|
||||
ctx := context.Background()
|
||||
// 直接使用 db.Client 跨包调用并创建数据
|
||||
u, err := db.Client.User.Create().
|
||||
// 根据您的 schema 字段做适当的设定,如:
|
||||
// SetUsername(username).
|
||||
// SetPassword(password).
|
||||
Save(ctx)
|
||||
if err != nil {
|
||||
global.Log.Error("创建用户失败", zap.Error(err))
|
||||
fmt.Println("用户创建失败: ", err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
fmt.Printf("✨ 用户创建成功!ID: %d, 用户名: %s\n", u.ID, username)
|
||||
},
|
||||
}
|
||||
|
||||
func init() {
|
||||
userCmd.AddCommand(userCreateCmd)
|
||||
rootCmd.AddCommand(userCmd)
|
||||
}
|
||||
Reference in new issue
Block a user