datamodel done without validators
This commit is contained in:
34
wagfarm-api/logs/fertilizing/model.go
Normal file
34
wagfarm-api/logs/fertilizing/model.go
Normal file
@@ -0,0 +1,34 @@
|
||||
package fertilizing
|
||||
|
||||
import (
|
||||
"wagfarm-api/assets/fertilizer"
|
||||
"wagfarm-api/database"
|
||||
"wagfarm-api/logs/base"
|
||||
|
||||
"github.com/shopspring/decimal"
|
||||
"gorm.io/gorm"
|
||||
)
|
||||
|
||||
type FertilizingLog struct {
|
||||
base.ExtendedLog
|
||||
FertilizerID uint `gorm:"not null"`
|
||||
Fertilizer fertilizer.Fertilizer `gorm:"constraint:OnUpdate:CASCADE,OnDelete:CASCADE;not null"`
|
||||
Amount float64 `gorm:"not null"` // in units of the fertilizer
|
||||
}
|
||||
|
||||
func (l *FertilizingLog) AfterSave(db *gorm.DB) (err error) {
|
||||
// Example: compute cost as Amount * UnitPrice
|
||||
if l.FertilizerID == 0 {
|
||||
if err := db.First(&l.Fertilizer, l.FertilizerID).Error; err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
unitPrice := l.Fertilizer.Cost
|
||||
totalCost := unitPrice.Mul(decimal.NewFromFloat(l.Amount))
|
||||
l.UpdateCost(db, totalCost)
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
func RegisterModels() { database.RegisterModel(&FertilizingLog{}) }
|
||||
11
wagfarm-api/logs/fertilizing/route.go
Normal file
11
wagfarm-api/logs/fertilizing/route.go
Normal file
@@ -0,0 +1,11 @@
|
||||
package fertilizing
|
||||
|
||||
import (
|
||||
"wagfarm-api/generic"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
func RegisterRoutes(rg *gin.RouterGroup) {
|
||||
generic.RegisterCRUDRoutes(rg.Group("/fertilizer"), generic.DefaultCRUDController[FertilizingLog]())
|
||||
}
|
||||
Reference in New Issue
Block a user