Skip to content

Commit

Permalink
WIP:Filter by page instead of offset
Browse files Browse the repository at this point in the history
Signed-off-by: Jerrico Dela Cruz <[email protected]>
  • Loading branch information
jerricotandelacruz committed Nov 29, 2024
1 parent f364c1e commit c48ef0b
Show file tree
Hide file tree
Showing 5 changed files with 147 additions and 83 deletions.
6 changes: 4 additions & 2 deletions src/goapp/controller/item/item-controller-dto.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,10 @@ type RespondePageData struct {
}

type GetItemsByApproverResponse struct {
Data []Item `json:"data"`
Total int `json:"total"`
Data []Item `json:"data"`
Page int `json:"page"`
Filter int `json:"filter"`
Total int `json:"total"`
}

type Item struct {
Expand Down
12 changes: 7 additions & 5 deletions src/goapp/controller/item/item-controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -124,14 +124,14 @@ func (c *itemController) GetItemsByApprover(w http.ResponseWriter, r *http.Reque
organization = params["organization"][0]
}

if params.Has("offset") {
filterOptions.Offset, err = strconv.Atoi(params["offset"][0])
filterOptions.Page = 0 // Default page is 1 which is 0 in the database
if params.Has("page") {
filterOptions.Page, err = strconv.Atoi(params["page"][0])
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
} else {
filterOptions.Offset = 0
filterOptions.Page = filterOptions.Page - 1
}

if params.Has("filter") {
Expand All @@ -141,7 +141,7 @@ func (c *itemController) GetItemsByApprover(w http.ResponseWriter, r *http.Reque
return
}
} else {
filterOptions.Filter = 100
filterOptions.Filter = 10
}

result, total, err := c.Service.Item.GetByApprover(user.Email, requestType, organization, filterOptions)
Expand All @@ -165,6 +165,8 @@ func (c *itemController) GetItemsByApprover(w http.ResponseWriter, r *http.Reque

response.Data = append(response.Data, itemResponse)
}
response.Page = filterOptions.Page
response.Filter = filterOptions.Filter
response.Total = total

// Return the result
Expand Down
2 changes: 1 addition & 1 deletion src/goapp/model/common.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ package model

type FilterOptions struct {
Filter int
Offset int
Page int
Search string
Orderby string
Ordertype string
Expand Down
5 changes: 3 additions & 2 deletions src/goapp/repository/item/item-repository.go
Original file line number Diff line number Diff line change
Expand Up @@ -114,8 +114,9 @@ func (r *itemRepository) GetItemsByApprover(approver, requestType, organization
params = append(params, sql.Named("Filter", filterOptions.Filter))
}

if filterOptions.Offset != 0 {
params = append(params, sql.Named("Offset", filterOptions.Offset))
if filterOptions.Page != 0 {
offset := filterOptions.Page * filterOptions.Filter
params = append(params, sql.Named("Offset", offset))
}

params = append(params, sql.Named("Approver", approver))
Expand Down
Loading

0 comments on commit c48ef0b

Please sign in to comment.