Files
wagfarm/wagfarm-api/assets/fertilizer/model.go

31 lines
1.0 KiB
Go

package fertilizer
import (
"wagfarm-api/assets/base"
"wagfarm-api/database"
"wagfarm-api/taxonomy/fertilizertype"
"wagfarm-api/taxonomy/ingredient"
)
type Fertilizer struct {
base.BoughtResource
FertilizerTypeID uint `gorm:"not null"`
FertilizerType fertilizertype.FertilizerType `gorm:"not null; constraint:OnUpdate:CASCADE,OnDelete:CASCADE;"`
// Association to the ingredients. This represents the composition.
Ingredients []FertilizerIngredient `gorm:"not null; many2many:fertilizer_ingredient"`
}
type FertilizerIngredient struct {
FertilizerAssetID uint `gorm:"primaryKey"` // foreign key to the fertilizer assets
IngredientID uint `gorm:"primaryKey"` // foreign key to the ingredient
Amount float64 `gorm:"not null"` // amount of the ingredient
// Preload the ingredient details if needed.
Ingredient ingredient.Ingredient `gorm:"not null"`
}
func RegisterModels() {
database.RegisterModel(&Fertilizer{})
database.RegisterJoinTable(&Fertilizer{}, "Ingredients", &FertilizerIngredient{})
}