Files
relay-server/handlers/messages.go
2025-02-11 16:34:59 +01:00

42 lines
1.0 KiB
Go

package handlers
import (
"github.com/gofiber/fiber/v2"
"github.com/google/uuid"
"relay-server/database"
"relay-server/utils"
)
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 utils.NewError(utils.ErrInvalidInput, "Invalid params", err)
}
if err := c.QueryParser(q); err != nil {
return utils.NewError(utils.ErrInvalidInput, "Invalid query", err)
}
if p.conversationID == uuid.Nil {
return utils.NewError(utils.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})
}