mirror of
https://github.com/ForFarmTeam/ForFarm.git
synced 2025-12-18 21:44:08 +01:00
46 lines
964 B
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
|
|
}
|