Files
Gardomatic/lib/client/plant_locations.go
T
kleiax 904d14b64c
CI / test (push) Canceled after 0s
Initial commit
2026-09-12 22:22:17 +02:00

48 lines
1.9 KiB
Go

package client
import (
"context"
"net/http"
"strconv"
)
// CreatePlantLocation assigns a plant to a location.
func (c *Client) CreatePlantLocation(ctx context.Context, gardenID, plantID int, input PlantLocationInput) (PlantLocation, *Response, error) {
return c.writePlantLocation(ctx, http.MethodPost, plantLocationCollectionPath(gardenID, plantID), input)
}
// PlantLocations lists a plant's location assignments.
func (c *Client) PlantLocations(ctx context.Context, gardenID, plantID int) ([]PlantLocation, *Response, error) {
var envelope struct {
PlantLocations []PlantLocation `json:"plant_locations"`
}
response, err := c.do(ctx, http.MethodGet, plantLocationCollectionPath(gardenID, plantID), nil, &envelope)
return envelope.PlantLocations, response, err
}
// UpdatePlantLocation updates one location assignment.
func (c *Client) UpdatePlantLocation(ctx context.Context, gardenID, plantID, assignmentID int, input PlantLocationInput) (PlantLocation, *Response, error) {
return c.writePlantLocation(ctx, http.MethodPatch, plantLocationPath(gardenID, plantID, assignmentID), input)
}
// DeletePlantLocation deletes one location assignment.
func (c *Client) DeletePlantLocation(ctx context.Context, gardenID, plantID, assignmentID int) (*Response, error) {
return c.do(ctx, http.MethodDelete, plantLocationPath(gardenID, plantID, assignmentID), nil, nil)
}
func (c *Client) writePlantLocation(ctx context.Context, method, path string, input PlantLocationInput) (PlantLocation, *Response, error) {
var envelope struct {
PlantLocation PlantLocation `json:"plant_location"`
}
response, err := c.do(ctx, method, path, input, &envelope)
return envelope.PlantLocation, response, err
}
func plantLocationCollectionPath(gardenID, plantID int) string {
return plantPath(gardenID, plantID) + "/locations"
}
func plantLocationPath(gardenID, plantID, assignmentID int) string {
return plantLocationCollectionPath(gardenID, plantID) + "/" + strconv.Itoa(assignmentID)
}