86 lines
2.5 KiB
Go
86 lines
2.5 KiB
Go
package main
|
|
|
|
import (
|
|
"flag"
|
|
|
|
"git.mstar.dev/mstar/goutils/other"
|
|
"github.com/rs/zerolog/log"
|
|
"gorm.io/driver/postgres"
|
|
"gorm.io/gen"
|
|
"gorm.io/gorm"
|
|
|
|
"git.mstar.dev/mstar/linstrom/config"
|
|
"git.mstar.dev/mstar/linstrom/shared"
|
|
"git.mstar.dev/mstar/linstrom/storage-new/models"
|
|
)
|
|
|
|
// "git.mstar.dev/mstar/linstrom/config"
|
|
|
|
// "context"
|
|
// "time"
|
|
// postgresContainer "github.com/testcontainers/testcontainers-go/modules/postgres"
|
|
// "github.com/testcontainers/testcontainers-go"
|
|
// "github.com/testcontainers/testcontainers-go/wait"
|
|
|
|
const (
|
|
dbName = "linstrom"
|
|
dbUser = "linstrom"
|
|
dbPass = "linstrom"
|
|
)
|
|
|
|
func main() {
|
|
other.SetupFlags()
|
|
flag.Parse()
|
|
other.ConfigureLogging(nil)
|
|
config.ReadAndWriteToGlobal(*shared.FlagConfigFile)
|
|
|
|
// Set up a temporary postgres container for gorm-gen to do its thing
|
|
// log.Info().Msg("Starting temporary postgres container")
|
|
// pgContainer, err := postgresContainer.Run(
|
|
// context.Background(),
|
|
// "postgres:16.4-alpine",
|
|
// postgresContainer.WithDatabase(dbName),
|
|
// postgresContainer.WithUsername(dbUser),
|
|
// postgresContainer.WithPassword(dbPass),
|
|
// testcontainers.WithWaitStrategyAndDeadline(
|
|
// time.Minute,
|
|
// wait.ForLog("database system is ready to accept connections").
|
|
// WithOccurrence(2).
|
|
// WithStartupTimeout(time.Second*5),
|
|
// ),
|
|
// )
|
|
// if err != nil {
|
|
// log.Fatal().Err(err).Msg("Failed to setup temporary postgres container")
|
|
// }
|
|
// log.Info().Msg("Temporary postgres container started")
|
|
// defer func() {
|
|
// if err := testcontainers.TerminateContainer(pgContainer); err != nil {
|
|
// log.Fatal().Err(err).Msg("Failed to terminate temporary postgres container")
|
|
// }
|
|
// log.Info().Msg("Temporary postgres container stopped")
|
|
// }()
|
|
db, err := gorm.Open(
|
|
postgres.Open(config.GlobalConfig.Storage.BuildPostgresDSN()),
|
|
// postgres.Open(pgContainer.MustConnectionString(context.Background())),
|
|
&gorm.Config{
|
|
PrepareStmt: false,
|
|
Logger: shared.NewGormLogger(log.Logger),
|
|
},
|
|
)
|
|
if err != nil {
|
|
log.Fatal().Err(err).Msg("Failed to open connection to temporary container")
|
|
}
|
|
log.Info().Msg("Connected to db")
|
|
g := gen.NewGenerator(gen.Config{
|
|
OutPath: "./dbgen",
|
|
Mode: gen.WithoutContext | gen.WithDefaultQuery | gen.WithQueryInterface, // generate mode
|
|
})
|
|
g.UseDB(db)
|
|
|
|
log.Info().Msg("Applying basic operations on all datatypes")
|
|
g.ApplyBasic(models.AllTypes...)
|
|
|
|
log.Info().Msg("Starting generation")
|
|
g.Execute()
|
|
log.Info().Msg("Code generation complete")
|
|
}
|