diff --git a/docs/docs.go b/docs/docs.go index 0d99461..3f0dddf 100644 --- a/docs/docs.go +++ b/docs/docs.go @@ -147,7 +147,7 @@ const docTemplate = `{ } } }, - "/chat/direct/{chatId}/messages/paginated": { + "/chat/direct/{chatId}/messages": { "get": { "security": [ { @@ -595,6 +595,75 @@ const docTemplate = `{ } } }, + "/chat/rooms/{roomId}/messages/paginated": { + "get": { + "security": [ + { + "BearerAuth": [] + } + ], + "description": "Devuelve los mensajes de una sala específica con soporte para paginación ordernada por fecha de creación descendente", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Chat" + ], + "summary": "Obtiene mensajes de una sala", + "parameters": [ + { + "type": "string", + "description": "ID de la sala", + "name": "roomId", + "in": "path", + "required": true + }, + { + "type": "integer", + "default": 50, + "description": "Límite de mensajes a obtener", + "name": "limit", + "in": "query" + }, + { + "type": "string", + "default": "\"1747441934\"", + "description": "Cursor para paginación (timestamp)", + "name": "cursor", + "in": "query" + } + ], + "responses": { + "200": { + "description": "Mensajes paginados de la sala", + "schema": { + "$ref": "#/definitions/models.PaginatedMessagesResponse" + } + }, + "401": { + "description": "No autorizado", + "schema": { + "type": "string" + } + }, + "404": { + "description": "Sala no encontrada", + "schema": { + "type": "string" + } + }, + "500": { + "description": "Error interno del servidor", + "schema": { + "type": "string" + } + } + } + } + }, "/chat/ws": { "get": { "description": "Establece una conexión WebSocket para mensajería en tiempo real", diff --git a/docs/swagger.json b/docs/swagger.json index dc8cd53..e9767cf 100644 --- a/docs/swagger.json +++ b/docs/swagger.json @@ -140,7 +140,7 @@ } } }, - "/chat/direct/{chatId}/messages/paginated": { + "/chat/direct/{chatId}/messages": { "get": { "security": [ { @@ -588,6 +588,75 @@ } } }, + "/chat/rooms/{roomId}/messages/paginated": { + "get": { + "security": [ + { + "BearerAuth": [] + } + ], + "description": "Devuelve los mensajes de una sala específica con soporte para paginación ordernada por fecha de creación descendente", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Chat" + ], + "summary": "Obtiene mensajes de una sala", + "parameters": [ + { + "type": "string", + "description": "ID de la sala", + "name": "roomId", + "in": "path", + "required": true + }, + { + "type": "integer", + "default": 50, + "description": "Límite de mensajes a obtener", + "name": "limit", + "in": "query" + }, + { + "type": "string", + "default": "\"1747441934\"", + "description": "Cursor para paginación (timestamp)", + "name": "cursor", + "in": "query" + } + ], + "responses": { + "200": { + "description": "Mensajes paginados de la sala", + "schema": { + "$ref": "#/definitions/models.PaginatedMessagesResponse" + } + }, + "401": { + "description": "No autorizado", + "schema": { + "type": "string" + } + }, + "404": { + "description": "Sala no encontrada", + "schema": { + "type": "string" + } + }, + "500": { + "description": "Error interno del servidor", + "schema": { + "type": "string" + } + } + } + } + }, "/chat/ws": { "get": { "description": "Establece una conexión WebSocket para mensajería en tiempo real", diff --git a/docs/swagger.yaml b/docs/swagger.yaml index e34ac6a..15ae2f0 100644 --- a/docs/swagger.yaml +++ b/docs/swagger.yaml @@ -206,7 +206,7 @@ paths: summary: Registra un nuevo usuario tags: - Auth - /chat/direct/{chatId}/messages/paginated: + /chat/direct/{chatId}/messages: get: consumes: - application/json @@ -493,6 +493,52 @@ paths: summary: Obtiene mensajes de una sala (versión simple) tags: - Chat + /chat/rooms/{roomId}/messages/paginated: + get: + consumes: + - application/json + description: Devuelve los mensajes de una sala específica con soporte para paginación + ordernada por fecha de creación descendente + parameters: + - description: ID de la sala + in: path + name: roomId + required: true + type: string + - default: 50 + description: Límite de mensajes a obtener + in: query + name: limit + type: integer + - default: '"1747441934"' + description: Cursor para paginación (timestamp) + in: query + name: cursor + type: string + produces: + - application/json + responses: + "200": + description: Mensajes paginados de la sala + schema: + $ref: '#/definitions/models.PaginatedMessagesResponse' + "401": + description: No autorizado + schema: + type: string + "404": + description: Sala no encontrada + schema: + type: string + "500": + description: Error interno del servidor + schema: + type: string + security: + - BearerAuth: [] + summary: Obtiene mensajes de una sala + tags: + - Chat /chat/rooms/me: get: consumes: diff --git a/internal/handlers/chat_handler.go b/internal/handlers/chat_handler.go index c111ba5..6a04aff 100644 --- a/internal/handlers/chat_handler.go +++ b/internal/handlers/chat_handler.go @@ -134,7 +134,7 @@ func (h *ChatHandler) GetUserRooms(w http.ResponseWriter, r *http.Request) { // @Failure 401 {string} string "No autorizado" // @Failure 404 {string} string "Sala no encontrada" // @Failure 500 {string} string "Error interno del servidor" -// @Router /chat/rooms/{roomId}/messages [get] +// @Router /chat/rooms/{roomId}/messages/paginated [get] func (h *ChatHandler) GetRoomMessages(w http.ResponseWriter, r *http.Request) { roomID := chi.URLParam(r, "roomId") @@ -247,7 +247,7 @@ func (h *ChatHandler) GetUserDirectChats(w http.ResponseWriter, r *http.Request) // @Failure 401 {string} string "No autorizado" // @Failure 404 {string} string "Chat no encontrado" // @Failure 500 {string} string "Error interno del servidor" -// @Router /chat/direct/{chatId}/messages/paginated [get] +// @Router /chat/direct/{chatId}/messages [get] func (h *ChatHandler) GetDirectChatMessages(w http.ResponseWriter, r *http.Request) { chatID := chi.URLParam(r, "chatId")