This commit is contained in:
2026-03-28 17:45:22 +01:00
commit 8726cf9e13
8 changed files with 851 additions and 0 deletions
+59
View File
@@ -0,0 +1,59 @@
package main
import (
"context"
"flag"
"fmt"
"log/slog"
"os"
"time"
"git.ma-al.com/goc_marek/gormcol"
)
func main() {
dsn := flag.String("dsn", "", "database DSN (required, e.g. user:pass@tcp(host:3306)/dbname)")
filter := flag.String("filter", "(ps_|b2b_).*", "regex to match table names")
outDir := flag.String("out", "./app/model/prestadb", "output directory for generated files")
pkgName := flag.String("pkg", "prestadb", "Go package name for generated files")
flag.Usage = func() {
fmt.Fprintf(os.Stderr, "gormcol-gen - generate GORM models with column descriptors\n\n")
fmt.Fprintf(os.Stderr, "Usage:\n")
fmt.Fprintf(os.Stderr, " gormcol-gen --dsn <connection-string> [options]\n\n")
fmt.Fprintf(os.Stderr, "Flags:\n")
flag.PrintDefaults()
}
if len(os.Args) < 2 {
flag.Usage()
os.Exit(0)
}
flag.Parse()
if *dsn == "" {
fmt.Fprintln(os.Stderr, "error: --dsn is required")
flag.Usage()
os.Exit(1)
}
db, err := gormcol.ConnectDSN(*dsn)
if err != nil {
slog.Error("failed to connect to database", "error", err)
os.Exit(1)
}
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Minute)
defer cancel()
cfg := gormcol.GenConfig{
OutputDir: *outDir,
PkgName: *pkgName,
TableFilter: *filter,
}
if err := gormcol.NewWithConfig(db, cfg).GenModels(ctx); err != nil {
slog.Error("failed to generate models", "error", err)
os.Exit(1)
}
}