package domain

import (
	"context"
	"time"

	validation "github.com/go-ozzo/ozzo-validation/v4"
)

type Cropland struct {
	UUID        string
	Name        string
	Status      string
	Priority    int
	LandSize    float64
	GrowthStage string
	PlantID     string
	FarmID      string
	CreatedAt   time.Time
	UpdatedAt   time.Time
}

func (c *Cropland) Validate() error {
	return validation.ValidateStruct(c,
		validation.Field(&c.Name, validation.Required),
		validation.Field(&c.Status, validation.Required),
		validation.Field(&c.GrowthStage, validation.Required),
		validation.Field(&c.LandSize, validation.Required),
	)
}

type CroplandRepository interface {
	GetByID(context.Context, string) (Cropland, error)
	CreateOrUpdate(context.Context, *Cropland) error
	Delete(context.Context, string) error
}
