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

View File

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

View File

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

View File

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

View File

@ -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",

View File

@ -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",

View File

@ -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