feat: update ai chat session
This commit is contained in:
parent
c2de25abbf
commit
dfe7fff7f6
|
|
@ -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)
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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",
|
||||||
|
|
|
||||||
|
|
@ -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",
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue