trying around with different routing and controller structures
This commit is contained in:
98
wagfarm-api/models/assets.go
Normal file
98
wagfarm-api/models/assets.go
Normal file
@@ -0,0 +1,98 @@
|
||||
package models
|
||||
|
||||
var AssetModels = []interface{}{
|
||||
&Land{},
|
||||
&Plant{},
|
||||
&Machine{},
|
||||
&Seed{},
|
||||
&Fertilizer{},
|
||||
&FertilizerIngredient{},
|
||||
&Pesticide{},
|
||||
&Product{},
|
||||
}
|
||||
|
||||
type _Asset struct {
|
||||
ID uint `gorm:"primaryKey`
|
||||
Name string `gorm:"not null"`
|
||||
Notes string
|
||||
}
|
||||
|
||||
type Land struct {
|
||||
_Asset
|
||||
FID string `gorm:"not null"`
|
||||
IsWaterProtectionArea bool `gorm:"not null"`
|
||||
IsRedArea bool `gorm:"not null"`
|
||||
Area float64 `gorm:"not null"`
|
||||
}
|
||||
|
||||
type Plant struct {
|
||||
_Asset
|
||||
LandId uint `gorm:"not null"`
|
||||
Land Land `gorm:"not null; constraint:OnUpdate:CASCADE,OnDelete:CASCADE;"`
|
||||
CropID uint `gorm:"not null"`
|
||||
Crop Crop `gorm:"not null; constraint:OnUpdate:CASCADE,OnDelete:CASCADE;"`
|
||||
CoverCropID uint `gorm:"not null"`
|
||||
CoverCrop Crop `gorm:"not null; constraint:OnUpdate:CASCADE,OnDelete:CASCADE;"`
|
||||
Year uint `gorm:"not null"`
|
||||
AreaPercentage float64 `gorm:"not null"`
|
||||
}
|
||||
type _Resource struct {
|
||||
_Asset
|
||||
UnitID uint `gorm:"not null"`
|
||||
Unit Unit `gorm:"not null; constraint:OnUpdate:CASCADE,OnDelete:CASCADE;"`
|
||||
Cost decimal.Decimal `gorm:"not null; type:decimal(10,2);"` // in euro/unit
|
||||
}
|
||||
|
||||
type Machine struct {
|
||||
_Resource
|
||||
}
|
||||
|
||||
type _BoughtResource struct {
|
||||
_Resource
|
||||
BuyDate Datetime.Time `gorm:"type:date;default:CURRENT_DATE"`
|
||||
BoughtFromID uint `gorm:"not null"`
|
||||
BoughtFrom Seller `gorm:"not null; constraint:OnUpdate:CASCADE,OnDelete:CASCADE;"`
|
||||
}
|
||||
|
||||
type _SoldResource struct {
|
||||
_Resource
|
||||
SaleDate Datetime.Time `gorm:"type:date;default:CURRENT_DATE"`
|
||||
SoldToID uint `gorm:"not null"`
|
||||
SoldTo Customer `gorm:"not null; constraint:OnUpdate:CASCADE,OnDelete:CASCADE;"`
|
||||
}
|
||||
|
||||
type Seed struct {
|
||||
_BoughtResource
|
||||
SeedTypeID uint `gorm:"not null"`
|
||||
SeedType SeedType `gorm:"not null; constraint:OnUpdate:CASCADE,OnDelete:CASCADE;"`
|
||||
}
|
||||
|
||||
type Fertilizer struct {
|
||||
_Asset
|
||||
_BoughtResource
|
||||
FertilizerTypeID uint `gorm:"not null"`
|
||||
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 asset
|
||||
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 `gorm:"not null"`
|
||||
}
|
||||
|
||||
type Pesticide struct {
|
||||
_BoughtResource
|
||||
PesticideTypeID uint `gorm:"not null"`
|
||||
PesticideType PesticideType `gorm:"not null; constraint:OnUpdate:CASCADE,OnDelete:CASCADE;"`
|
||||
}
|
||||
|
||||
type Product struct {
|
||||
_SoldResource
|
||||
ProductTypeID uint `gorm:"not null"`
|
||||
ProductType ProductType `gorm:"not null; constraint:OnUpdate:CASCADE,OnDelete:CASCADE;"`
|
||||
}
|
||||
Reference in New Issue
Block a user