42 lines
1.0 KiB
Go
42 lines
1.0 KiB
Go
package handlers
|
|
|
|
import (
|
|
"github.com/gofiber/fiber/v2"
|
|
"github.com/google/uuid"
|
|
"relay-server/database"
|
|
"relay-server/helpers"
|
|
)
|
|
|
|
func GetMessages(c *fiber.Ctx) error {
|
|
type params struct {
|
|
conversationID uuid.UUID `params:"conversationID"`
|
|
}
|
|
type query struct {
|
|
limit int `query:"limit"`
|
|
cursor int `query:"cursor"`
|
|
}
|
|
userID := c.Locals("userID").(uuid.UUID)
|
|
|
|
p := new(params)
|
|
q := new(query)
|
|
if err := c.ParamsParser(p); err != nil {
|
|
return helpers.NewError(helpers.ErrInvalidInput, "Invalid params", err)
|
|
}
|
|
if err := c.QueryParser(q); err != nil {
|
|
return helpers.NewError(helpers.ErrInvalidInput, "Invalid query", err)
|
|
}
|
|
if p.conversationID == uuid.Nil {
|
|
return helpers.NewError(helpers.ErrInvalidInput, "conversation ID is empty", nil)
|
|
}
|
|
|
|
messages, err := database.GetMessages(database.DB, userID, p.conversationID, q.limit, q.cursor)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
if len(messages) == 0 {
|
|
return c.JSON(fiber.Map{"message": "No messages found"})
|
|
}
|
|
|
|
return c.JSON(fiber.Map{"messages": messages})
|
|
}
|