mirror of
https://github.com/abhinavxd/libredesk.git
synced 2026-09-22 10:33:24 +00:00
fix: pagination, adds total pages count and total rows count to results.
This commit is contained in:
+37
-7
@@ -11,7 +11,7 @@ import (
|
||||
"github.com/zerodha/fastglue"
|
||||
)
|
||||
|
||||
// handleGetAllConversations retrieves all conversations with pagination, sorting, and filtering.
|
||||
// handleGetAllConversations retrieves all conversations.
|
||||
func handleGetAllConversations(r *fastglue.Request) error {
|
||||
var (
|
||||
app = r.Context.(*App)
|
||||
@@ -20,12 +20,22 @@ func handleGetAllConversations(r *fastglue.Request) error {
|
||||
page, _ = strconv.Atoi(string(r.RequestCtx.QueryArgs().Peek("page")))
|
||||
pageSize, _ = strconv.Atoi(string(r.RequestCtx.QueryArgs().Peek("page_size")))
|
||||
filters = string(r.RequestCtx.QueryArgs().Peek("filters"))
|
||||
total = 0
|
||||
)
|
||||
c, err := app.conversation.GetAllConversationsList(order, orderBy, filters, page, pageSize)
|
||||
conversations, pageSize, err := app.conversation.GetAllConversationsList(order, orderBy, filters, page, pageSize)
|
||||
if err != nil {
|
||||
return sendErrorEnvelope(r, err)
|
||||
}
|
||||
return r.SendEnvelope(c)
|
||||
if len(conversations) > 0 {
|
||||
total = conversations[0].Total
|
||||
}
|
||||
return r.SendEnvelope(envelope.PageResults{
|
||||
Results: conversations,
|
||||
Total: total,
|
||||
PerPage: pageSize,
|
||||
TotalPages: total / pageSize,
|
||||
Page: page,
|
||||
})
|
||||
}
|
||||
|
||||
// handleGetAssignedConversations retrieves conversations assigned to the current user.
|
||||
@@ -38,12 +48,22 @@ func handleGetAssignedConversations(r *fastglue.Request) error {
|
||||
page, _ = strconv.Atoi(string(r.RequestCtx.QueryArgs().Peek("page")))
|
||||
pageSize, _ = strconv.Atoi(string(r.RequestCtx.QueryArgs().Peek("page_size")))
|
||||
filters = string(r.RequestCtx.QueryArgs().Peek("filters"))
|
||||
total = 0
|
||||
)
|
||||
c, err := app.conversation.GetAssignedConversationsList(user.ID, order, orderBy, filters, page, pageSize)
|
||||
conversations, pageSize, err := app.conversation.GetAssignedConversationsList(user.ID, order, orderBy, filters, page, pageSize)
|
||||
if err != nil {
|
||||
return r.SendErrorEnvelope(fasthttp.StatusInternalServerError, err.Error(), nil, "")
|
||||
}
|
||||
return r.SendEnvelope(c)
|
||||
if len(conversations) > 0 {
|
||||
total = conversations[0].Total
|
||||
}
|
||||
return r.SendEnvelope(envelope.PageResults{
|
||||
Results: conversations,
|
||||
Total: total,
|
||||
PerPage: pageSize,
|
||||
TotalPages: total / pageSize,
|
||||
Page: page,
|
||||
})
|
||||
}
|
||||
|
||||
// handleGetUnassignedConversations retrieves unassigned conversations.
|
||||
@@ -56,12 +76,22 @@ func handleGetUnassignedConversations(r *fastglue.Request) error {
|
||||
page, _ = strconv.Atoi(string(r.RequestCtx.QueryArgs().Peek("page")))
|
||||
pageSize, _ = strconv.Atoi(string(r.RequestCtx.QueryArgs().Peek("page_size")))
|
||||
filters = string(r.RequestCtx.QueryArgs().Peek("filters"))
|
||||
total = 0
|
||||
)
|
||||
c, err := app.conversation.GetUnassignedConversationsList(user.ID, order, orderBy, filters, page, pageSize)
|
||||
conversations, pageSize, err := app.conversation.GetUnassignedConversationsList(user.ID, order, orderBy, filters, page, pageSize)
|
||||
if err != nil {
|
||||
return r.SendErrorEnvelope(fasthttp.StatusInternalServerError, err.Error(), nil, "")
|
||||
}
|
||||
return r.SendEnvelope(c)
|
||||
if len(conversations) > 0 {
|
||||
total = conversations[0].Total
|
||||
}
|
||||
return r.SendEnvelope(envelope.PageResults{
|
||||
Results: conversations,
|
||||
Total: total,
|
||||
PerPage: pageSize,
|
||||
TotalPages: total / pageSize,
|
||||
Page: page,
|
||||
})
|
||||
}
|
||||
|
||||
// handleGetConversation retrieves a single conversation by UUID with permission checks.
|
||||
|
||||
+11
-2
@@ -5,6 +5,7 @@ import (
|
||||
|
||||
"github.com/abhinavxd/artemis/internal/conversation"
|
||||
cmodels "github.com/abhinavxd/artemis/internal/conversation/models"
|
||||
"github.com/abhinavxd/artemis/internal/envelope"
|
||||
medModels "github.com/abhinavxd/artemis/internal/media/models"
|
||||
umodels "github.com/abhinavxd/artemis/internal/user/models"
|
||||
"github.com/valyala/fasthttp"
|
||||
@@ -24,6 +25,7 @@ func handleGetMessages(r *fastglue.Request) error {
|
||||
user = r.RequestCtx.UserValue("user").(umodels.User)
|
||||
page, _ = strconv.Atoi(string(r.RequestCtx.QueryArgs().Peek("page")))
|
||||
pageSize, _ = strconv.Atoi(string(r.RequestCtx.QueryArgs().Peek("page_size")))
|
||||
total = 0
|
||||
)
|
||||
|
||||
// Check permission
|
||||
@@ -32,17 +34,24 @@ func handleGetMessages(r *fastglue.Request) error {
|
||||
return sendErrorEnvelope(r, err)
|
||||
}
|
||||
|
||||
messages, err := app.conversation.GetConversationMessages(uuid, page, pageSize)
|
||||
messages, pageSize, err := app.conversation.GetConversationMessages(uuid, page, pageSize)
|
||||
if err != nil {
|
||||
return sendErrorEnvelope(r, err)
|
||||
}
|
||||
|
||||
for i := range messages {
|
||||
total = messages[i].Total
|
||||
for j := range messages[i].Attachments {
|
||||
messages[i].Attachments[j].URL = app.media.GetURL(messages[i].Attachments[j].UUID)
|
||||
}
|
||||
}
|
||||
return r.SendEnvelope(messages)
|
||||
return r.SendEnvelope(envelope.PageResults{
|
||||
Total: total,
|
||||
Results: messages,
|
||||
Page: page,
|
||||
PerPage: pageSize,
|
||||
TotalPages: total / pageSize,
|
||||
})
|
||||
}
|
||||
|
||||
func handleGetMessage(r *fastglue.Request) error {
|
||||
|
||||
Reference in New Issue
Block a user