diff --git a/backend/internal/api/farm.go b/backend/internal/api/farm.go index ecaf840..4820e11 100644 --- a/backend/internal/api/farm.go +++ b/backend/internal/api/farm.go @@ -7,7 +7,6 @@ import ( "github.com/danielgtaylor/huma/v2" "github.com/forfarm/backend/internal/domain" "github.com/go-chi/chi/v5" - "github.com/google/uuid" ) func (a *api) registerFarmRoutes(_ chi.Router, api huma.API) { @@ -46,11 +45,10 @@ func (a *api) registerFarmRoutes(_ chi.Router, api huma.API) { type CreateFarmInput struct { Header string `header:"Authorization" required:"true" example:"Bearer token"` Body struct { - Name string `json:"name"` - Lat []float64 `json:"lat"` - Lon []float64 `json:"lon"` - OwnerID string `json:"owner_id"` - PlantTypes []uuid.UUID `json:"plant_types"` + Name string `json:"name"` + Lat []float64 `json:"lat"` + Lon []float64 `json:"lon"` + OwnerID string `json:"owner_id"` } } @@ -62,11 +60,10 @@ type CreateFarmOutput struct { func (a *api) createFarmHandler(ctx context.Context, input *CreateFarmInput) (*CreateFarmOutput, error) { farm := &domain.Farm{ - Name: input.Body.Name, - Lat: input.Body.Lat, - Lon: input.Body.Lon, - OwnerID: input.Body.OwnerID, - PlantTypes: input.Body.PlantTypes, + Name: input.Body.Name, + Lat: input.Body.Lat, + Lon: input.Body.Lon, + OwnerID: input.Body.OwnerID, } err := a.farmRepo.CreateOrUpdate(ctx, farm) diff --git a/backend/internal/domain/farm.go b/backend/internal/domain/farm.go index 666c2c1..6422735 100644 --- a/backend/internal/domain/farm.go +++ b/backend/internal/domain/farm.go @@ -2,20 +2,19 @@ package domain import ( "context" - validation "github.com/go-ozzo/ozzo-validation/v4" - "github.com/google/uuid" "time" + + validation "github.com/go-ozzo/ozzo-validation/v4" ) type Farm struct { - UUID string - Name string - Lat []float64 - Lon []float64 - CreatedAt time.Time - UpdatedAt time.Time - OwnerID string - PlantTypes []uuid.UUID + UUID string + Name string + Lat []float64 + Lon []float64 + CreatedAt time.Time + UpdatedAt time.Time + OwnerID string } func (f *Farm) Validate() error { diff --git a/backend/internal/repository/postgres_farm.go b/backend/internal/repository/postgres_farm.go index 44ae54f..5cd9439 100644 --- a/backend/internal/repository/postgres_farm.go +++ b/backend/internal/repository/postgres_farm.go @@ -2,10 +2,10 @@ package repository import ( "context" + "strings" + "github.com/forfarm/backend/internal/domain" "github.com/google/uuid" - "github.com/lib/pq" - "strings" ) type postgresFarmRepository struct { @@ -26,7 +26,6 @@ func (p *postgresFarmRepository) fetch(ctx context.Context, query string, args . var farms []domain.Farm for rows.Next() { var f domain.Farm - var plantTypes pq.StringArray if err := rows.Scan( &f.UUID, &f.Name, @@ -35,19 +34,10 @@ func (p *postgresFarmRepository) fetch(ctx context.Context, query string, args . &f.CreatedAt, &f.UpdatedAt, &f.OwnerID, - &plantTypes, ); err != nil { return nil, err } - for _, plantTypeStr := range plantTypes { - plantTypeUUID, err := uuid.Parse(plantTypeStr) - if err != nil { - return nil, err - } - f.PlantTypes = append(f.PlantTypes, plantTypeUUID) - } - farms = append(farms, f) } return farms, nil @@ -83,11 +73,6 @@ func (p *postgresFarmRepository) CreateOrUpdate(ctx context.Context, f *domain.F f.UUID = uuid.New().String() } - plantTypes := make([]string, len(f.PlantTypes)) - for i, pt := range f.PlantTypes { - plantTypes[i] = pt.String() - } - query := ` INSERT INTO farms (uuid, name, lat, lon, created_at, updated_at, owner_id, plant_types) VALUES ($1, $2, $3, $4, NOW(), NOW(), $5, $6) @@ -108,7 +93,6 @@ func (p *postgresFarmRepository) CreateOrUpdate(ctx context.Context, f *domain.F f.Lat, f.Lon, f.OwnerID, - pq.StringArray(plantTypes), ).Scan(&f.UUID, &f.CreatedAt, &f.UpdatedAt) } diff --git a/backend/migrations/00003_drop_column_plant_types_from_farms.sql b/backend/migrations/00003_drop_column_plant_types_from_farms.sql new file mode 100644 index 0000000..b643d83 --- /dev/null +++ b/backend/migrations/00003_drop_column_plant_types_from_farms.sql @@ -0,0 +1,2 @@ +-- +goose Up +ALTER TABLE farms DROP COLUMN plant_types; \ No newline at end of file