package utils import ( "log/slog" "git.kocoder.xyz/kocoded/vt/model" "git.kocoder.xyz/kocoded/vt/query" "gorm.io/driver/postgres" "gorm.io/gen" "gorm.io/gorm" ) func SetupDatabase(dsn string, logger *slog.Logger) *gorm.DB { db, err := gorm.Open(postgres.Open(dsn), &gorm.Config{}) if err != nil { logger.Error("Error connecting to the Database", "error", err) } err = db.SetupJoinTable(model.Ansprechpartner{}, "Firmen", model.FirmaAnsprechpartner{}) if err != nil { logger.Error("Error setting up Join Tables", "error", err) } err = db.SetupJoinTable(model.Firma{}, "Ansprechpartner", model.FirmaAnsprechpartner{}) if err != nil { logger.Error("Error setting up Join Tables", "error", err) } err = db.AutoMigrate(&model.Ansprechpartner{}, &model.FirmaAnsprechpartner{}, &model.Firma{}) if err != nil { logger.Error("Error setting up Join Tables", "error", err) } g := gen.NewGenerator(gen.Config{ OutPath: "./query", Mode: gen.WithoutContext | gen.WithDefaultQuery | gen.WithQueryInterface, // generate mode }) // gormdb, _ := gorm.Open(mysql.Open("root:@(127.0.0.1:3306)/demo?charset=utf8mb4&parseTime=True&loc=Local")) g.UseDB(db) // reuse your gorm db // Generate basic type-safe DAO API for struct `model.User` following conventions g.ApplyBasic(model.Ansprechpartner{}, model.Dokument{}, model.Firma{}, model.Kalender{}, model.Kalendereintrag{}, model.Kostenstelle{}, model.Lager{}, model.Lagerplatz{}, model.Material{}, model.Nachricht{}, model.Projekt{}, model.Rechnung{}, model.Rechnungsposition{}, model.Scanobject{}, model.User{}, model.Zahlung{}, model.FirmaAnsprechpartner{}) // Generate the code g.Execute() query.SetDefault(db) return db }