43 lines
1.7 KiB
Go
43 lines
1.7 KiB
Go
package entities
|
|
|
|
import (
|
|
"time"
|
|
|
|
"github.com/google/uuid"
|
|
)
|
|
|
|
type IngredientUnitConverter struct {
|
|
ID uuid.UUID `gorm:"type:uuid;primary_key;default:gen_random_uuid()" json:"id"`
|
|
OrganizationID uuid.UUID `gorm:"type:uuid;not null" json:"organization_id"`
|
|
IngredientID uuid.UUID `gorm:"type:uuid;not null" json:"ingredient_id"`
|
|
FromUnitID uuid.UUID `gorm:"type:uuid;not null" json:"from_unit_id"`
|
|
ToUnitID uuid.UUID `gorm:"type:uuid;not null" json:"to_unit_id"`
|
|
ConversionFactor float64 `gorm:"type:decimal(15,6);not null" json:"conversion_factor"`
|
|
IsActive bool `gorm:"default:true" json:"is_active"`
|
|
CreatedAt time.Time `gorm:"autoCreateTime" json:"created_at"`
|
|
UpdatedAt time.Time `gorm:"autoUpdateTime" json:"updated_at"`
|
|
CreatedBy uuid.UUID `gorm:"type:uuid;not null" json:"created_by"`
|
|
UpdatedBy uuid.UUID `gorm:"type:uuid;not null" json:"updated_by"`
|
|
|
|
// Relationships
|
|
Organization *Organization `gorm:"foreignKey:OrganizationID" json:"organization,omitempty"`
|
|
Ingredient *Ingredient `gorm:"foreignKey:IngredientID" json:"ingredient,omitempty"`
|
|
FromUnit *Unit `gorm:"foreignKey:FromUnitID" json:"from_unit,omitempty"`
|
|
ToUnit *Unit `gorm:"foreignKey:ToUnitID" json:"to_unit,omitempty"`
|
|
CreatedByUser *User `gorm:"foreignKey:CreatedBy" json:"created_by_user,omitempty"`
|
|
UpdatedByUser *User `gorm:"foreignKey:UpdatedBy" json:"updated_by_user,omitempty"`
|
|
}
|
|
|
|
func (IngredientUnitConverter) TableName() string {
|
|
return "ingredient_unit_converters"
|
|
}
|
|
|
|
// BeforeCreate hook to set default values
|
|
func (iuc *IngredientUnitConverter) BeforeCreate() error {
|
|
if iuc.ID == uuid.Nil {
|
|
iuc.ID = uuid.New()
|
|
}
|
|
return nil
|
|
}
|
|
|