datamodel done without validators

This commit is contained in:
2025-04-17 12:33:53 +02:00
parent 284a40fac2
commit 5337da219e
58 changed files with 575 additions and 227 deletions

View File

@@ -0,0 +1,40 @@
package seeding
import (
"wagfarm-api/assets/seed"
"wagfarm-api/database"
"wagfarm-api/logs/base"
"wagfarm-api/taxonomy/seedingcondition"
"wagfarm-api/taxonomy/seedingtechnique"
"github.com/shopspring/decimal"
"gorm.io/gorm"
)
type SeedingLog struct {
base.FieldWorkLog
SeedID uint `gorm:"not null"`
Seed seed.Seed `gorm:"constraint:OnUpdate:CASCADE,OnDelete:CASCADE;not null"`
TechniqueID uint `gorm:"not null"`
Technique seedingtechnique.SeedingTechnique `gorm:"constraint:OnUpdate:CASCADE,OnDelete:CASCADE;not null"`
Amount float64 `gorm:"not null"` // in units/ha
ConditionsID uint `gorm:"not null"`
Conditions seedingcondition.SeedingCondition `gorm:"constraint:OnUpdate:CASCADE,OnDelete:CASCADE;not null"`
}
func (l *SeedingLog) AfterSave(db *gorm.DB) (err error) {
// Example: compute cost as Amount * UnitPrice
if l.SeedID == 0 {
if err := db.First(&l.Seed, l.SeedID).Error; err != nil {
return err
}
}
unitPrice := l.Seed.Cost
totalCost := unitPrice.Mul(decimal.NewFromFloat(l.Amount))
l.UpdateCost(db, totalCost)
return
}
func RegisterModels() { database.RegisterModel(&SeedingLog{}) }

View File

@@ -0,0 +1,11 @@
package seeding
import (
"wagfarm-api/generic"
"github.com/gin-gonic/gin"
)
func RegisterRoutes(rg *gin.RouterGroup) {
generic.RegisterCRUDRoutes(rg.Group("/seeding"), generic.DefaultCRUDController[SeedingLog]())
}