feat: update ai chat session

This commit is contained in:
hanif salafi 2025-09-20 19:17:35 +07:00
parent c2de25abbf
commit dfe7fff7f6
7 changed files with 33 additions and 42 deletions

View File

@ -53,7 +53,7 @@ func (_i *AIChatRouter) RegisterAIChatRoutes() {
router.Delete("/sessions/:id", aiChatController.DeleteSession) router.Delete("/sessions/:id", aiChatController.DeleteSession)
// Messages routes // Messages routes
router.Get("/sessions/messages", aiChatController.GetSessionMessages) router.Get("/sessions/:id/messages", aiChatController.GetSessionMessages)
router.Post("/sessions/messages", aiChatController.SendMessage) router.Post("/sessions/messages", aiChatController.SendMessage)
router.Put("/sessions/messages/:messageId", aiChatController.UpdateMessage) router.Put("/sessions/messages/:messageId", aiChatController.UpdateMessage)
router.Delete("/sessions/messages/:messageId", aiChatController.DeleteMessage) router.Delete("/sessions/messages/:messageId", aiChatController.DeleteMessage)

View File

@ -224,16 +224,19 @@ func (_i *aiChatController) DeleteSession(c *fiber.Ctx) error {
// @Tags AI Chat // @Tags AI Chat
// @Security Bearer // @Security Bearer
// @Param Authorization header string false "Insert your access token" default(Bearer <Add access token here>) // @Param Authorization header string false "Insert your access token" default(Bearer <Add access token here>)
// @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 request.AIChatMessagesQueryRequest false "query parameters"
// @Param req query paginator.Pagination false "pagination parameters" // @Param req query paginator.Pagination false "pagination parameters"
// @Success 200 {object} response.Response // @Success 200 {object} response.Response
// @Failure 400 {object} response.BadRequestError // @Failure 400 {object} response.BadRequestError
// @Failure 401 {object} response.UnauthorizedError // @Failure 401 {object} response.UnauthorizedError
// @Failure 500 {object} response.InternalServerError // @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 { 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) paginate, err := paginator.Paginate(c)
if err != nil { if err != nil {
@ -242,13 +245,11 @@ func (_i *aiChatController) GetSessionMessages(c *fiber.Ctx) error {
authHeader := c.Get("Authorization") authHeader := c.Get("Authorization")
reqContext := request.AIChatMessagesQueryRequestContext{ reqContext := request.AIChatMessagesQueryRequestContext{}
SessionID: sessionId,
}
req := reqContext.ToParamRequest() req := reqContext.ToParamRequest()
req.Pagination = paginate 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 { if err != nil {
return err return err
} }

View File

@ -41,7 +41,6 @@ func (req AIChatSessionsUpdateRequest) ToEntity() *entity.AIChatSessions {
// AI Chat Messages Request DTOs // AI Chat Messages Request DTOs
type AIChatMessagesQueryRequest struct { type AIChatMessagesQueryRequest struct {
SessionID string `json:"sessionId" validate:"required"`
Pagination *paginator.Pagination `json:"pagination"` Pagination *paginator.Pagination `json:"pagination"`
} }
@ -86,17 +85,11 @@ func (req AIChatSessionsQueryRequestContext) ToParamRequest() AIChatSessionsQuer
} }
type AIChatMessagesQueryRequestContext struct { type AIChatMessagesQueryRequestContext struct {
SessionID string `json:"sessionId"`
} }
func (req AIChatMessagesQueryRequestContext) ToParamRequest() AIChatMessagesQueryRequest { func (req AIChatMessagesQueryRequestContext) ToParamRequest() AIChatMessagesQueryRequest {
var request 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 return request
} }

View File

@ -29,7 +29,7 @@ type AIChatService interface {
ArchiveSession(authToken string, id uint) error ArchiveSession(authToken string, id uint) error
// Messages // 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) SendMessage(authToken string, req request.AIChatMessagesCreateRequest) (message *response.AIChatMessagesResponse, err error)
UpdateMessage(authToken string, messageId uint, req request.AIChatMessagesUpdateRequest) (err error) UpdateMessage(authToken string, messageId uint, req request.AIChatMessagesUpdateRequest) (err error)
DeleteMessage(authToken string, messageId uint) error DeleteMessage(authToken string, messageId uint) error
@ -140,16 +140,16 @@ func (_i *aiChatService) ArchiveSession(authToken string, id uint) error {
} }
// Messages methods // Messages methods
func (_i *aiChatService) GetSessionMessages(authToken string, sessionId string, req request.AIChatMessagesQueryRequest) (messages []*response.AIChatMessagesResponse, paging paginator.Pagination, err error) { 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) userInfo := utilSvc.GetUserInfo(_i.Log, _i.UsersRepo, authToken)
// Verify session belongs to user // Verify session belongs to user
_, err = _i.Repo.FindSessionBySessionId(sessionId) session, err := _i.Repo.FindSessionByUserAndId(userInfo.ID, sessionId)
if err != nil { if err != nil {
return nil, paginator.Pagination{}, err 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 { if err != nil {
return return
} }

View File

@ -1606,7 +1606,7 @@ const docTemplate = `{
} }
} }
}, },
"/ai-chat/sessions/{sessionId}/messages": { "/ai-chat/sessions/{id}/messages": {
"get": { "get": {
"security": [ "security": [
{ {
@ -1629,16 +1629,10 @@ const docTemplate = `{
{ {
"type": "integer", "type": "integer",
"description": "Session ID", "description": "Session ID",
"name": "sessionId", "name": "id",
"in": "path", "in": "path",
"required": true "required": true
}, },
{
"type": "string",
"name": "sessionId",
"in": "query",
"required": true
},
{ {
"type": "integer", "type": "integer",
"name": "count", "name": "count",
@ -10130,6 +10124,11 @@ const docTemplate = `{
], ],
"summary": "Get all Users", "summary": "Get all Users",
"parameters": [ "parameters": [
{
"type": "string",
"name": "degree",
"in": "query"
},
{ {
"type": "string", "type": "string",
"name": "email", "name": "email",

View File

@ -1595,7 +1595,7 @@
} }
} }
}, },
"/ai-chat/sessions/{sessionId}/messages": { "/ai-chat/sessions/{id}/messages": {
"get": { "get": {
"security": [ "security": [
{ {
@ -1618,16 +1618,10 @@
{ {
"type": "integer", "type": "integer",
"description": "Session ID", "description": "Session ID",
"name": "sessionId", "name": "id",
"in": "path", "in": "path",
"required": true "required": true
}, },
{
"type": "string",
"name": "sessionId",
"in": "query",
"required": true
},
{ {
"type": "integer", "type": "integer",
"name": "count", "name": "count",
@ -10119,6 +10113,11 @@
], ],
"summary": "Get all Users", "summary": "Get all Users",
"parameters": [ "parameters": [
{
"type": "string",
"name": "degree",
"in": "query"
},
{ {
"type": "string", "type": "string",
"name": "email", "name": "email",

View File

@ -1966,7 +1966,7 @@ paths:
summary: Update AI chat session summary: Update AI chat session
tags: tags:
- AI Chat - AI Chat
/ai-chat/sessions/{sessionId}/messages: /ai-chat/sessions/{id}/messages:
get: get:
description: API for getting all messages in an AI chat session description: API for getting all messages in an AI chat session
parameters: parameters:
@ -1977,13 +1977,9 @@ paths:
type: string type: string
- description: Session ID - description: Session ID
in: path in: path
name: sessionId name: id
required: true required: true
type: integer type: integer
- in: query
name: sessionId
required: true
type: string
- in: query - in: query
name: count name: count
type: integer type: integer
@ -7512,6 +7508,9 @@ paths:
get: get:
description: API for getting all Users description: API for getting all Users
parameters: parameters:
- in: query
name: degree
type: string
- in: query - in: query
name: email name: email
type: string type: string