diff --git a/app/module/ai_chat/ai_chat.module.go b/app/module/ai_chat/ai_chat.module.go index e83e886..d7b9f35 100644 --- a/app/module/ai_chat/ai_chat.module.go +++ b/app/module/ai_chat/ai_chat.module.go @@ -53,7 +53,7 @@ func (_i *AIChatRouter) RegisterAIChatRoutes() { router.Delete("/sessions/:id", aiChatController.DeleteSession) // Messages routes - router.Get("/sessions/messages", aiChatController.GetSessionMessages) + router.Get("/sessions/:id/messages", aiChatController.GetSessionMessages) router.Post("/sessions/messages", aiChatController.SendMessage) router.Put("/sessions/messages/:messageId", aiChatController.UpdateMessage) router.Delete("/sessions/messages/:messageId", aiChatController.DeleteMessage) diff --git a/app/module/ai_chat/controller/ai_chat.controller.go b/app/module/ai_chat/controller/ai_chat.controller.go index 45027dd..917cb62 100644 --- a/app/module/ai_chat/controller/ai_chat.controller.go +++ b/app/module/ai_chat/controller/ai_chat.controller.go @@ -224,16 +224,19 @@ func (_i *aiChatController) DeleteSession(c *fiber.Ctx) error { // @Tags AI Chat // @Security Bearer // @Param Authorization header string false "Insert your access token" default(Bearer ) -// @Param sessionId path int true "Session ID" +// @Param id path int true "Session ID" // @Param req query request.AIChatMessagesQueryRequest false "query parameters" // @Param req query paginator.Pagination false "pagination parameters" // @Success 200 {object} response.Response // @Failure 400 {object} response.BadRequestError // @Failure 401 {object} response.UnauthorizedError // @Failure 500 {object} response.InternalServerError -// @Router /ai-chat/sessions/{sessionId}/messages [get] +// @Router /ai-chat/sessions/{id}/messages [get] func (_i *aiChatController) GetSessionMessages(c *fiber.Ctx) error { - sessionId := c.Params("sessionId") + id, err := strconv.ParseUint(c.Params("id"), 10, 0) + if err != nil { + return err + } paginate, err := paginator.Paginate(c) if err != nil { @@ -242,13 +245,11 @@ func (_i *aiChatController) GetSessionMessages(c *fiber.Ctx) error { authHeader := c.Get("Authorization") - reqContext := request.AIChatMessagesQueryRequestContext{ - SessionID: sessionId, - } + reqContext := request.AIChatMessagesQueryRequestContext{} req := reqContext.ToParamRequest() req.Pagination = paginate - messagesData, paging, err := _i.aiChatService.GetSessionMessages(authHeader, sessionId, req) + messagesData, paging, err := _i.aiChatService.GetSessionMessages(authHeader, uint(id), req) if err != nil { return err } diff --git a/app/module/ai_chat/request/ai_chat.request.go b/app/module/ai_chat/request/ai_chat.request.go index e28d97c..e563b2b 100644 --- a/app/module/ai_chat/request/ai_chat.request.go +++ b/app/module/ai_chat/request/ai_chat.request.go @@ -41,7 +41,6 @@ func (req AIChatSessionsUpdateRequest) ToEntity() *entity.AIChatSessions { // AI Chat Messages Request DTOs type AIChatMessagesQueryRequest struct { - SessionID string `json:"sessionId" validate:"required"` Pagination *paginator.Pagination `json:"pagination"` } @@ -86,17 +85,11 @@ func (req AIChatSessionsQueryRequestContext) ToParamRequest() AIChatSessionsQuer } type AIChatMessagesQueryRequestContext struct { - SessionID string `json:"sessionId"` } func (req AIChatMessagesQueryRequestContext) ToParamRequest() AIChatMessagesQueryRequest { var request AIChatMessagesQueryRequest - if sessionIDStr := req.SessionID; sessionIDStr != "" { - // Parse session ID from string to uint - // This will be handled in the controller - } - return request } diff --git a/app/module/ai_chat/service/ai_chat.service.go b/app/module/ai_chat/service/ai_chat.service.go index c6d236f..5802493 100644 --- a/app/module/ai_chat/service/ai_chat.service.go +++ b/app/module/ai_chat/service/ai_chat.service.go @@ -29,7 +29,7 @@ type AIChatService interface { ArchiveSession(authToken string, id uint) error // Messages - GetSessionMessages(authToken string, sessionId string, req request.AIChatMessagesQueryRequest) (messages []*response.AIChatMessagesResponse, paging paginator.Pagination, err error) + GetSessionMessages(authToken string, sessionId uint, req request.AIChatMessagesQueryRequest) (messages []*response.AIChatMessagesResponse, paging paginator.Pagination, err error) SendMessage(authToken string, req request.AIChatMessagesCreateRequest) (message *response.AIChatMessagesResponse, err error) UpdateMessage(authToken string, messageId uint, req request.AIChatMessagesUpdateRequest) (err error) DeleteMessage(authToken string, messageId uint) error @@ -140,16 +140,16 @@ func (_i *aiChatService) ArchiveSession(authToken string, id uint) error { } // Messages methods -func (_i *aiChatService) GetSessionMessages(authToken string, sessionId string, req request.AIChatMessagesQueryRequest) (messages []*response.AIChatMessagesResponse, paging paginator.Pagination, err error) { - // userInfo := utilSvc.GetUserInfo(_i.Log, _i.UsersRepo, authToken) +func (_i *aiChatService) GetSessionMessages(authToken string, sessionId uint, req request.AIChatMessagesQueryRequest) (messages []*response.AIChatMessagesResponse, paging paginator.Pagination, err error) { + userInfo := utilSvc.GetUserInfo(_i.Log, _i.UsersRepo, authToken) // Verify session belongs to user - _, err = _i.Repo.FindSessionBySessionId(sessionId) + session, err := _i.Repo.FindSessionByUserAndId(userInfo.ID, sessionId) if err != nil { return nil, paginator.Pagination{}, err } - results, paging, err := _i.Repo.GetSessionMessages(sessionId, req) + results, paging, err := _i.Repo.GetSessionMessages(session.SessionID, req) if err != nil { return } diff --git a/docs/swagger/docs.go b/docs/swagger/docs.go index 4a7ea0e..79672f6 100644 --- a/docs/swagger/docs.go +++ b/docs/swagger/docs.go @@ -1606,7 +1606,7 @@ const docTemplate = `{ } } }, - "/ai-chat/sessions/{sessionId}/messages": { + "/ai-chat/sessions/{id}/messages": { "get": { "security": [ { @@ -1629,16 +1629,10 @@ const docTemplate = `{ { "type": "integer", "description": "Session ID", - "name": "sessionId", + "name": "id", "in": "path", "required": true }, - { - "type": "string", - "name": "sessionId", - "in": "query", - "required": true - }, { "type": "integer", "name": "count", @@ -10130,6 +10124,11 @@ const docTemplate = `{ ], "summary": "Get all Users", "parameters": [ + { + "type": "string", + "name": "degree", + "in": "query" + }, { "type": "string", "name": "email", diff --git a/docs/swagger/swagger.json b/docs/swagger/swagger.json index 0409db8..f9871fa 100644 --- a/docs/swagger/swagger.json +++ b/docs/swagger/swagger.json @@ -1595,7 +1595,7 @@ } } }, - "/ai-chat/sessions/{sessionId}/messages": { + "/ai-chat/sessions/{id}/messages": { "get": { "security": [ { @@ -1618,16 +1618,10 @@ { "type": "integer", "description": "Session ID", - "name": "sessionId", + "name": "id", "in": "path", "required": true }, - { - "type": "string", - "name": "sessionId", - "in": "query", - "required": true - }, { "type": "integer", "name": "count", @@ -10119,6 +10113,11 @@ ], "summary": "Get all Users", "parameters": [ + { + "type": "string", + "name": "degree", + "in": "query" + }, { "type": "string", "name": "email", diff --git a/docs/swagger/swagger.yaml b/docs/swagger/swagger.yaml index 088d788..d37d00e 100644 --- a/docs/swagger/swagger.yaml +++ b/docs/swagger/swagger.yaml @@ -1966,7 +1966,7 @@ paths: summary: Update AI chat session tags: - AI Chat - /ai-chat/sessions/{sessionId}/messages: + /ai-chat/sessions/{id}/messages: get: description: API for getting all messages in an AI chat session parameters: @@ -1977,13 +1977,9 @@ paths: type: string - description: Session ID in: path - name: sessionId + name: id required: true type: integer - - in: query - name: sessionId - required: true - type: string - in: query name: count type: integer @@ -7512,6 +7508,9 @@ paths: get: description: API for getting all Users parameters: + - in: query + name: degree + type: string - in: query name: email type: string