78 lines
1.7 KiB
Go
78 lines
1.7 KiB
Go
//go:build ignore
|
|
|
|
package main
|
|
|
|
import (
|
|
"context"
|
|
"database/sql"
|
|
"flag"
|
|
"fmt"
|
|
"log"
|
|
|
|
"bj_power_mes/ent"
|
|
"bj_power_mes/internal/db"
|
|
|
|
"entgo.io/ent/dialect"
|
|
entsql "entgo.io/ent/dialect/sql"
|
|
"entgo.io/ent/dialect/sql/schema"
|
|
_ "github.com/jackc/pgx/v5/stdlib"
|
|
"github.com/zeromicro/go-zero/core/conf"
|
|
)
|
|
|
|
// 建表工具:DSN 一律从 etc 配置文件读取,不硬编码
|
|
// 用法(在 bj_power_mes 目录下):go run schema/tools/migrate.go
|
|
|
|
var (
|
|
client *ent.Client
|
|
|
|
ctx = context.Background()
|
|
configFile = flag.String("config", "etc/bj_power_mes-api.yaml", "配置文件路径")
|
|
)
|
|
|
|
// migrateConf 与主配置结构一致,只取 Database 段
|
|
type migrateConf struct {
|
|
Database db.DatabaseConf
|
|
}
|
|
|
|
func setUp() {
|
|
var c migrateConf
|
|
conf.MustLoad(*configFile, &c)
|
|
|
|
dsn := fmt.Sprintf("host=%s port=%d user=%s password=%s dbname=%s sslmode=disable",
|
|
c.Database.Host, c.Database.Port, c.Database.User, c.Database.Password, c.Database.Dbname)
|
|
db, err := sql.Open("pgx", dsn)
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
|
|
if _, err = db.Query("select 1"); err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
|
|
drv := entsql.OpenDB(dialect.Postgres, db)
|
|
client = ent.NewClient(ent.Driver(drv))
|
|
}
|
|
|
|
func tearDown() {
|
|
if client != nil {
|
|
_ = client.Close()
|
|
}
|
|
}
|
|
|
|
func main() {
|
|
flag.Parse()
|
|
setUp()
|
|
defer tearDown()
|
|
|
|
// 只建新表/加列,不删列,保证生产数据安全
|
|
if err := client.Debug().Schema.Create(
|
|
context.Background(),
|
|
schema.WithDropIndex(true),
|
|
schema.WithDropColumn(false),
|
|
schema.WithDialect(dialect.Postgres),
|
|
schema.WithForeignKeys(false),
|
|
); err != nil {
|
|
log.Fatalf("failed creating schema resources: %v", err)
|
|
}
|
|
log.Println("schemas migrated successfully!")
|
|
} |