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}) }