50 lines
1.7 KiB
Go
50 lines
1.7 KiB
Go
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
|
|
}
|