datamodel done without validators
This commit is contained in:
@@ -3,8 +3,6 @@ package database
|
||||
import (
|
||||
"fmt"
|
||||
"os"
|
||||
"slices"
|
||||
"wagfarm-api/models"
|
||||
|
||||
"gorm.io/driver/mysql"
|
||||
"gorm.io/gorm"
|
||||
@@ -35,17 +33,40 @@ func Connect() error {
|
||||
DB = db
|
||||
return nil
|
||||
}
|
||||
|
||||
var allModels []any
|
||||
|
||||
func RegisterModel(model any) {
|
||||
allModels = append(allModels, model)
|
||||
}
|
||||
|
||||
type JoinTable struct {
|
||||
model any
|
||||
field string
|
||||
joinTable any
|
||||
}
|
||||
|
||||
var allJoinTables []JoinTable
|
||||
|
||||
func RegisterJoinTable(model any, field string, joinTable any) {
|
||||
newJoin := JoinTable{
|
||||
model: model,
|
||||
field: field,
|
||||
joinTable: joinTable,
|
||||
}
|
||||
allJoinTables = append(allJoinTables, newJoin)
|
||||
}
|
||||
|
||||
func Migrate() error {
|
||||
var err error
|
||||
err = DB.AutoMigrate(slices.Concat(
|
||||
log.Models, asset.Models, taxonomy.Models))
|
||||
if err != nil {
|
||||
// Run migrations
|
||||
if err := DB.AutoMigrate(allModels...); 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)
|
||||
for _, table := range allJoinTables {
|
||||
if err := DB.SetupJoinTable(table.model, table.field, table.joinTable); err != nil {
|
||||
return fmt.Errorf("creating custom join tables failed: %w", err)
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
|
||||
Reference in New Issue
Block a user