Files
bj_power/bj_power_mes/schema/tools/data.go
T

114 lines
1.9 KiB
Go

package main
import (
"context"
"database/sql"
"encoding/csv"
"io"
"log"
"os"
"path/filepath"
"strconv"
"bj_power_mes/ent"
"entgo.io/ent/dialect"
entsql "entgo.io/ent/dialect/sql"
_ "github.com/jackc/pgx/v5/stdlib"
)
var (
client *ent.Client
ctx = context.Background()
)
func setUp() {
db, err := sql.Open("pgx", "postgresql://postgres:postgres@127.0.0.1:5432/back_cover")
if err != nil {
log.Fatal(err)
}
_, err = db.Query("select 1")
if err != nil {
log.Fatal(err)
}
drv := entsql.OpenDB(dialect.Postgres, db)
client = ent.NewClient(ent.Driver(drv)).Debug()
}
func tearDown() {
err := client.Close()
if err != nil {
return
}
}
var commands = map[string]func(){
"signals": initSignals,
}
func main() {
if len(os.Args) < 2 {
log.Fatal("please specify the command")
}
if len(os.Args) > 1 {
setUp()
defer tearDown()
args := os.Args[1:]
for _, cmd := range args {
if v, ok := commands[cmd]; ok {
log.Println("initialize", cmd)
v()
}
}
}
}
func initSignals() {
signalFilePath, _ := filepath.Abs("../doc/signal.csv")
file, err := os.Open(signalFilePath)
if err != nil {
if os.IsNotExist(err) {
log.Fatalf("%s is not found", signalFilePath)
}
log.Fatal("signals initialized failed!", err)
}
r := csv.NewReader(file)
client.Signal.Delete().ExecX(ctx)
line := 0
for {
records, err := r.Read()
if err == io.EOF {
break
} else if err != nil {
log.Fatal(err)
}
if line == 0 {
line++
continue
}
name := records[1]
desc := records[2]
isStatus, _ := strconv.Atoi(records[3])
sender, _ := strconv.Atoi(records[4])
address := records[5]
offset, _ := strconv.Atoi(records[6])
client.Signal.Create().
SetID(line).
SetIsStatus(isStatus).
SetName(name).
SetDescription(desc).
SetSender(sender).
SetAddress(address).
SetReplyOffset(offset).
SaveX(ctx)
line++
}
log.Println("signals initialized successfully!")
}