-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #53 from green-ecolution/feature/implement-treeclu…
…sert-api feat: implement treeclusert api
- Loading branch information
Showing
4 changed files
with
283 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,75 @@ | ||
package treecluster | ||
|
||
import ( | ||
"time" | ||
|
||
"github.com/green-ecolution/green-ecolution-backend/internal/server/http/entities/pagination" | ||
"github.com/green-ecolution/green-ecolution-backend/internal/server/http/entities/tree" | ||
) | ||
|
||
type TreeClusterWateringStatus string // @Name WateringStatus | ||
|
||
const ( | ||
TreeClusterWateringStatusGood TreeClusterWateringStatus = "good" | ||
TreeClusterWateringStatusModerate TreeClusterWateringStatus = "moderate" | ||
TreeClusterWateringStatusBad TreeClusterWateringStatus = "bad" | ||
TreeClusterWateringStatusUnknown TreeClusterWateringStatus = "unknown" | ||
) | ||
|
||
type TreeSoilCondition string // @Name SoilCondition | ||
|
||
const ( | ||
TreeSoilConditionSchluffig TreeSoilCondition = "schluffig" | ||
) | ||
|
||
type TreeClusterResponse struct { | ||
ID int32 `json:"id,omitempty"` | ||
CreatedAt time.Time `json:"created_at,omitempty"` | ||
UpdatedAt time.Time `json:"updated_at,omitempty"` | ||
WateringStatus TreeClusterWateringStatus `json:"watering_status,omitempty"` | ||
LastWatered time.Time `json:"last_watered,omitempty"` | ||
MoistureLevel float64 `json:"moisture_level,omitempty"` | ||
Region string `json:"region,omitempty"` | ||
Address string `json:"address,omitempty"` | ||
Description string `json:"description,omitempty"` | ||
Archived bool `json:"archived,omitempty"` | ||
Latitude float64 `json:"latitude,omitempty"` | ||
Longitude float64 `json:"longitude,omitempty"` | ||
Trees []*tree.TreeResponse `json:"trees,omitempty"` | ||
SoilCondition TreeSoilCondition `json:"soil_condition,omitempty"` | ||
} // @Name TreeCluster | ||
|
||
type TreeClusterListResponse struct { | ||
Data []*TreeClusterResponse `json:"data,omitempty"` | ||
Pagination *pagination.Pagination `json:"pagination,omitempty"` | ||
} // @Name TreeClusterList | ||
|
||
type TreeClusterCreateRequest struct { | ||
WateringStatus TreeClusterWateringStatus `json:"watering_status,omitempty"` | ||
Region string `json:"region,omitempty"` | ||
Address string `json:"address,omitempty"` | ||
Description string `json:"description,omitempty"` | ||
Archived bool `json:"archived,omitempty"` | ||
Latitude float64 `json:"latitude,omitempty"` | ||
Longitude float64 `json:"longitude,omitempty"` | ||
TreeIDs []*int32 `json:"tree_ids,omitempty"` | ||
SoilCondition TreeSoilCondition `json:"soil_condition,omitempty"` | ||
} // @Name TreeClusterCreate | ||
|
||
type TreeClusterUpdateRequest struct { | ||
WateringStatus TreeClusterWateringStatus `json:"watering_status,omitempty"` | ||
LastWatered time.Time `json:"last_watered,omitempty"` | ||
MoistureLevel float64 `json:"moisture_level,omitempty"` | ||
Region string `json:"region,omitempty"` | ||
Address string `json:"address,omitempty"` | ||
Description string `json:"description,omitempty"` | ||
Archived bool `json:"archived,omitempty"` | ||
Latitude float64 `json:"latitude,omitempty"` | ||
Longitude float64 `json:"longitude,omitempty"` | ||
TreeIDs []*int32 `json:"tree_ids,omitempty"` | ||
SoilCondition TreeSoilCondition `json:"soil_condition,omitempty"` | ||
} // @Name TreeClusterUpdate | ||
|
||
type TreeClusterAddTreesRequest struct { | ||
TreeIDs []*int32 `json:"tree_ids,omitempty"` | ||
} // @Name TreeClusterAddTrees |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,185 @@ | ||
package treecluster | ||
|
||
import ( | ||
"github.com/gofiber/fiber/v2" | ||
"github.com/green-ecolution/green-ecolution-backend/internal/server/http/entities/tree" | ||
"github.com/green-ecolution/green-ecolution-backend/internal/server/http/entities/treecluster" | ||
"github.com/green-ecolution/green-ecolution-backend/internal/service" | ||
) | ||
|
||
// @Summary Get all tree clusters | ||
// @Description Get all tree clusters | ||
// @Id get-all-tree-clusters | ||
// @Tags Tree Cluster | ||
// @Produce json | ||
// @Success 200 {object} treecluster.TreeClusterListResponse | ||
// @Failure 400 {object} HTTPError | ||
// @Failure 401 {object} HTTPError | ||
// @Failure 403 {object} HTTPError | ||
// @Failure 404 {object} HTTPError | ||
// @Failure 500 {object} HTTPError | ||
// @Router /v1/cluster [get] | ||
// @Param page query string false "Page" | ||
// @Param limit query string false "Limit" | ||
// @Param status query string false "Status" | ||
// @Param Authorization header string true "Insert your access token" default(Bearer <Add access token here>) | ||
func GetAllTreeClusters(_ service.Service) fiber.Handler { | ||
return func(c *fiber.Ctx) error { | ||
// TODO: Implement | ||
return c.JSON(treecluster.TreeClusterListResponse{}) | ||
} | ||
} | ||
|
||
// @Summary Get tree cluster by ID | ||
// @Description Get tree cluster by ID | ||
// @Id get-tree-cluster-by-id | ||
// @Tags Tree Cluster | ||
// @Produce json | ||
// @Success 200 {object} treecluster.TreeClusterResponse | ||
// @Failure 400 {object} HTTPError | ||
// @Failure 401 {object} HTTPError | ||
// @Failure 403 {object} HTTPError | ||
// @Failure 404 {object} HTTPError | ||
// @Failure 500 {object} HTTPError | ||
// @Router /v1/cluster/{cluster_id} [get] | ||
// @Param cluster_id path string true "Tree Cluster ID" | ||
// @Param Authorization header string true "Insert your access token" default(Bearer <Add access token here>) | ||
func GetTreeClusterByID(_ service.Service) fiber.Handler { | ||
return func(c *fiber.Ctx) error { | ||
// TODO: Implement | ||
return c.JSON(treecluster.TreeClusterResponse{}) | ||
} | ||
} | ||
|
||
// @Summary Create tree cluster | ||
// @Description Create tree cluster | ||
// @Id create-tree-cluster | ||
// @Tags Tree Cluster | ||
// @Produce json | ||
// @Success 200 {object} treecluster.TreeClusterResponse | ||
// @Failure 400 {object} HTTPError | ||
// @Failure 401 {object} HTTPError | ||
// @Failure 403 {object} HTTPError | ||
// @Failure 404 {object} HTTPError | ||
// @Failure 500 {object} HTTPError | ||
// @Router /v1/cluster [post] | ||
// @Param body body treecluster.TreeClusterCreateRequest true "Tree Cluster Create Request" | ||
// @Param Authorization header string true "Insert your access token" default(Bearer <Add access token here>) | ||
func CreateTreeCluster(_ service.Service) fiber.Handler { | ||
return func(c *fiber.Ctx) error { | ||
// TODO: Implement | ||
return c.JSON(treecluster.TreeClusterResponse{}) | ||
} | ||
} | ||
|
||
// @Summary Update tree cluster | ||
// @Description Update tree cluster | ||
// @Id update-tree-cluster | ||
// @Tags Tree Cluster | ||
// @Produce json | ||
// @Success 200 {object} treecluster.TreeClusterResponse | ||
// @Failure 400 {object} HTTPError | ||
// @Failure 401 {object} HTTPError | ||
// @Failure 403 {object} HTTPError | ||
// @Failure 404 {object} HTTPError | ||
// @Failure 500 {object} HTTPError | ||
// @Router /v1/cluster/{cluster_id} [put] | ||
// @Param cluster_id path string true "Tree Cluster ID" | ||
// @Param body body treecluster.TreeClusterUpdateRequest true "Tree Cluster Update Request" | ||
// @Param Authorization header string true "Insert your access token" default(Bearer <Add access token here>) | ||
func UpdateTreeCluster(_ service.Service) fiber.Handler { | ||
return func(c *fiber.Ctx) error { | ||
// TODO: Implement | ||
return c.JSON(treecluster.TreeClusterResponse{}) | ||
} | ||
} | ||
|
||
// @Summary Delete tree cluster | ||
// @Description Delete tree cluster | ||
// @Id delete-tree-cluster | ||
// @Tags Tree Cluster | ||
// @Produce json | ||
// @Success 200 {object} treecluster.TreeClusterResponse | ||
// @Failure 400 {object} HTTPError | ||
// @Failure 401 {object} HTTPError | ||
// @Failure 403 {object} HTTPError | ||
// @Failure 404 {object} HTTPError | ||
// @Failure 500 {object} HTTPError | ||
// @Router /v1/cluster/{cluster_id} [delete] | ||
// @Param cluster_id path string true "Tree Cluster ID" | ||
// @Param Authorization header string true "Insert your access token" default(Bearer <Add access token here>) | ||
func DeleteTreeCluster(_ service.Service) fiber.Handler { | ||
return func(c *fiber.Ctx) error { | ||
// TODO: Implement | ||
return c.JSON(treecluster.TreeClusterResponse{}) | ||
} | ||
} | ||
|
||
// @Summary Get all trees in tree cluster | ||
// @Description Get all trees in tree cluster | ||
// @Id get-all-trees-in-tree-cluster | ||
// @Tags Tree Cluster | ||
// @Produce json | ||
// @Success 200 {object} tree.TreeResponse | ||
// @Failure 400 {object} HTTPError | ||
// @Failure 401 {object} HTTPError | ||
// @Failure 403 {object} HTTPError | ||
// @Failure 404 {object} HTTPError | ||
// @Failure 500 {object} HTTPError | ||
// @Router /v1/cluster/{cluster_id}/trees [get] | ||
// @Param cluster_id path string true "Tree Cluster ID" | ||
// @Param page query string false "Page" | ||
// @Param limit query string false "Limit" | ||
// @Param age query string false "Age" | ||
// @Param Authorization header string true "Insert your access token" default(Bearer <Add access token here>) | ||
func GetTreesInTreeCluster(_ service.Service) fiber.Handler { | ||
// TODO: Change response @Success to tree.TreeListResponse | ||
return func(c *fiber.Ctx) error { | ||
// TODO: Implement | ||
return c.JSON(tree.TreeResponse{}) | ||
} | ||
} | ||
|
||
// @Summary Add trees to tree cluster | ||
// @Description Add trees to tree cluster | ||
// @Id add-trees-to-tree-cluster | ||
// @Tags Tree Cluster | ||
// @Produce json | ||
// @Success 200 {object} treecluster.TreeClusterResponse | ||
// @Failure 400 {object} HTTPError | ||
// @Failure 401 {object} HTTPError | ||
// @Failure 403 {object} HTTPError | ||
// @Failure 404 {object} HTTPError | ||
// @Failure 500 {object} HTTPError | ||
// @Router /v1/cluster/{cluster_id}/trees [post] | ||
// @Param cluster_id path string true "Tree Cluster ID" | ||
// @Param body body treecluster.TreeClusterAddTreesRequest true "Tree Cluster Add Trees Request" | ||
// @Param Authorization header string true "Insert your access token" default(Bearer <Add access token here>) | ||
func AddTreesToTreeCluster(_ service.Service) fiber.Handler { | ||
return func(c *fiber.Ctx) error { | ||
// TODO: Implement | ||
return c.JSON(treecluster.TreeClusterResponse{}) | ||
} | ||
} | ||
|
||
// @Summary Remove trees from tree cluster | ||
// @Description Remove trees from tree cluster | ||
// @Id remove-trees-from-tree-cluster | ||
// @Tags Tree Cluster | ||
// @Produce json | ||
// @Success 200 {object} treecluster.TreeClusterResponse | ||
// @Failure 400 {object} HTTPError | ||
// @Failure 401 {object} HTTPError | ||
// @Failure 403 {object} HTTPError | ||
// @Failure 404 {object} HTTPError | ||
// @Failure 500 {object} HTTPError | ||
// @Router /v1/cluster/{cluster_id}/trees/{tree_id} [delete] | ||
// @Param cluster_id path string true "Tree Cluster ID" | ||
// @Param tree_id path string true "Tree ID" | ||
// @Param Authorization header string true "Insert your access token" default(Bearer <Add access token here>) | ||
func RemoveTreesFromTreeCluster(_ service.Service) fiber.Handler { | ||
return func(c *fiber.Ctx) error { | ||
// TODO: Implement | ||
return c.JSON(treecluster.TreeClusterResponse{}) | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
package treecluster | ||
|
||
import ( | ||
"github.com/gofiber/fiber/v2" | ||
"github.com/green-ecolution/green-ecolution-backend/internal/service" | ||
) | ||
|
||
func RegisterRoutes(svc service.Service) *fiber.App { | ||
app := fiber.New() | ||
|
||
app.Get("/", GetAllTreeClusters(svc)) | ||
app.Get("/:treecluster_id", GetTreeClusterByID(svc)) | ||
app.Post("/", CreateTreeCluster(svc)) | ||
app.Put("/:treecluster_id", UpdateTreeCluster(svc)) | ||
app.Delete("/:treecluster_id", DeleteTreeCluster(svc)) | ||
app.Get("/:treecluster_id/trees", GetTreesInTreeCluster(svc)) | ||
app.Post("/:treecluster_id/trees", AddTreesToTreeCluster(svc)) | ||
app.Delete("/:treecluster_id/trees/:tree_id", RemoveTreesFromTreeCluster(svc)) | ||
|
||
return app | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters