package database import ( "fmt" "os" "slices" "wagfarm-api/models" "gorm.io/driver/mysql" "gorm.io/gorm" ) var DB *gorm.DB func Connect() error { var err error var db *gorm.DB dbUser := os.Getenv("DB_USER") dbPassword := os.Getenv("DB_PASSWORD") dbHost := os.Getenv("DB_HOST") dbPort := os.Getenv("DB_PORT") dbName := os.Getenv("DB_NAME") dsn := fmt.Sprintf( "%s:%s@tcp(%s:%s)/%s?parseTime=true", dbUser, dbPassword, dbHost, dbPort, dbName, ) db, err = gorm.Open(mysql.Open(dsn), &gorm.Config{}) if err != nil { return fmt.Errorf("failed to connect to database: %w", err) } DB = db return nil } func Migrate() error { var err error err = DB.AutoMigrate(slices.Concat( models.LogModels, models.AssetModels, models.TaxonomyModels)) if err != nil { return fmt.Errorf("auto migration failed: %w", err) } err = DB.SetupJoinTable(&models.Fertilizer{}, "Ingredients", &models.FertilizerIngredient{}) if err != nil { return fmt.Errorf("failed to setup join table for FertilizerAsset and Ingredients: %w", err) } return nil }