ForFarm/backend/internal/api/plant.go

46 lines
964 B
Go

package api
import (
"context"
"net/http"
"github.com/danielgtaylor/huma/v2"
"github.com/forfarm/backend/internal/domain"
"github.com/go-chi/chi/v5"
)
func (a *api) registerPlantRoutes(_ chi.Router, api huma.API) {
tags := []string{"plant"}
prefix := "/plant"
huma.Register(api, huma.Operation{
OperationID: "getAllPlant",
Method: http.MethodGet,
Path: prefix,
Tags: tags,
}, a.getAllPlantHandler)
}
type GetAllPlantsOutput struct {
Body struct {
Plants []domain.Plant `json:"plants"`
}
}
func (a *api) getAllPlantHandler(ctx context.Context, input *struct{}) (*GetAllPlantsOutput, error) {
resp := &GetAllPlantsOutput{}
plants, err := a.plantRepo.GetAll(ctx)
if err != nil {
a.logger.Error("Failed to get all plants", "error", err)
return nil, huma.Error500InternalServerError("Failed to retrieve plants")
}
if plants == nil {
plants = []domain.Plant{}
}
resp.Body.Plants = plants
return resp, nil
}