@@ -2,8 +2,6 @@ package handlers
22
33import (
44 "net/http"
5- "strconv"
6- "time"
75
86 "back_end/src/models"
97
@@ -21,7 +19,7 @@ func (h *TaskHandler) CreateTask(c *gin.Context) {
2119 c .JSON (http .StatusBadRequest , gin.H {"error" : err .Error ()})
2220 return
2321 }
24- task . CreateDate = time . Now ()
22+
2523 if err := h .DB .Create (& task ).Error ; err != nil {
2624 c .JSON (http .StatusInternalServerError , gin.H {"error" : err .Error ()})
2725 return
@@ -30,16 +28,31 @@ func (h *TaskHandler) CreateTask(c *gin.Context) {
3028}
3129
3230func (h * TaskHandler ) GetTasks (c * gin.Context ) {
31+ var pagination Pagination
32+ if err := c .ShouldBindQuery (& pagination ); err != nil {
33+ c .JSON (http .StatusBadRequest , gin.H {"error" : err .Error ()})
34+ return
35+ }
36+
3337 var tasks []models.Task
34- page , _ := strconv .Atoi (c .DefaultQuery ("page" , "1" ))
35- limit , _ := strconv .Atoi (c .DefaultQuery ("limit" , "10" ))
36- offset := (page - 1 ) * limit
38+ offset := pagination .GetOffset ()
39+ limit := pagination .GetLimit ()
3740
3841 if err := h .DB .Offset (offset ).Limit (limit ).Find (& tasks ).Error ; err != nil {
3942 c .JSON (http .StatusInternalServerError , gin.H {"error" : err .Error ()})
4043 return
4144 }
42- c .JSON (http .StatusOK , tasks )
45+
46+ // Calculate total rows and pages
47+ var totalRows int64
48+ h .DB .Model (& models.Task {}).Count (& totalRows )
49+ totalPages := int ((totalRows + int64 (limit ) - 1 ) / int64 (limit ))
50+
51+ pagination .TotalRows = totalRows
52+ pagination .TotalPages = totalPages
53+ pagination .Rows = tasks
54+
55+ c .JSON (http .StatusOK , pagination )
4356}
4457
4558func (h * TaskHandler ) GetTask (c * gin.Context ) {
0 commit comments