feat: site count
This commit is contained in:
@@ -26,6 +26,7 @@ func (h *Handler) Route(group *gin.RouterGroup, jwt gin.HandlerFunc) {
|
||||
route.PUT("/:id", jwt, h.Update)
|
||||
route.GET("/:id", jwt, h.GetByID)
|
||||
route.DELETE("/:id", jwt, h.Delete)
|
||||
route.GET("/count", jwt, h.Count)
|
||||
}
|
||||
|
||||
func NewHandler(service services.Site) *Handler {
|
||||
@@ -148,7 +149,8 @@ func (h *Handler) GetAll(c *gin.Context) {
|
||||
return
|
||||
}
|
||||
|
||||
Sites, total, err := h.service.GetAll(c.Request.Context(), req.ToEntity())
|
||||
ctx := request.GetMyContext(c)
|
||||
Sites, total, err := h.service.GetAll(c.Request.Context(), req.ToEntity(ctx))
|
||||
if err != nil {
|
||||
response.ErrorWrapper(c, err)
|
||||
return
|
||||
@@ -242,6 +244,30 @@ func (h *Handler) GetByID(c *gin.Context) {
|
||||
})
|
||||
}
|
||||
|
||||
func (h *Handler) Count(c *gin.Context) {
|
||||
var req request.SiteParam
|
||||
if err := c.ShouldBindQuery(&req); err != nil {
|
||||
response.ErrorWrapper(c, errors.ErrorBadRequest)
|
||||
return
|
||||
}
|
||||
|
||||
ctx := request.GetMyContext(c)
|
||||
res, err := h.service.Count(ctx, req.ToEntity(ctx))
|
||||
|
||||
if err != nil {
|
||||
response.ErrorWrapper(c, err)
|
||||
return
|
||||
}
|
||||
|
||||
c.JSON(http.StatusOK, response.BaseResponse{
|
||||
Success: true,
|
||||
Status: http.StatusOK,
|
||||
Data: response.SiteCount{
|
||||
Count: res.Count,
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
func (h *Handler) toSiteResponse(resp *entity.Site) response.Site {
|
||||
return response.Site{
|
||||
ID: &resp.ID,
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package request
|
||||
|
||||
import (
|
||||
"furtuna-be/internal/common/mycontext"
|
||||
"furtuna-be/internal/entity"
|
||||
)
|
||||
|
||||
@@ -65,8 +66,10 @@ type SiteParam struct {
|
||||
Offset int `form:"offset,default=0"`
|
||||
}
|
||||
|
||||
func (r *SiteParam) ToEntity() entity.SiteSearch {
|
||||
func (r *SiteParam) ToEntity(ctx mycontext.Context) entity.SiteSearch {
|
||||
return entity.SiteSearch{
|
||||
PartnerID: ctx.GetPartnerID(),
|
||||
IsAdmin: ctx.IsAdmin(),
|
||||
Search: r.Search,
|
||||
Name: r.Name,
|
||||
Limit: r.Limit,
|
||||
|
||||
@@ -24,6 +24,10 @@ type SiteName struct {
|
||||
Name string `json:"name"`
|
||||
}
|
||||
|
||||
type SiteCount struct {
|
||||
Count int `json:"count"`
|
||||
}
|
||||
|
||||
type SiteList struct {
|
||||
Sites []Site `json:"sites"`
|
||||
Total int64 `json:"total"`
|
||||
|
||||
Reference in New Issue
Block a user