ForFarm/backend/internal/domain/farm.go

40 lines
1.1 KiB
Go

package domain
import (
"context"
"time"
validation "github.com/go-ozzo/ozzo-validation/v4"
)
type Farm struct {
UUID string `json:"uuid"`
Name string `json:"name"`
Lat float64 `json:"lat"`
Lon float64 `json:"lon"`
FarmType string `json:"farmType,omitempty"`
TotalSize string `json:"totalSize,omitempty"`
CreatedAt time.Time `json:"createdAt"`
UpdatedAt time.Time `json:"updatedAt"`
OwnerID string `json:"ownerId"`
Crops []Cropland `json:"crops,omitempty"`
}
func (f *Farm) Validate() error {
return validation.ValidateStruct(f,
validation.Field(&f.Name, validation.Required),
validation.Field(&f.Lat, validation.Required),
validation.Field(&f.Lon, validation.Required),
validation.Field(&f.OwnerID, validation.Required),
)
}
type FarmRepository interface {
GetByID(context.Context, string) (*Farm, error)
GetByOwnerID(context.Context, string) ([]Farm, error)
GetAll(context.Context) ([]Farm, error)
CreateOrUpdate(context.Context, *Farm) error
Delete(context.Context, string) error
SetEventPublisher(EventPublisher)
}