package request import ( "narasi-ahli-be/app/database/entity" "narasi-ahli-be/utils/paginator" ) // AI Chat Sessions Request DTOs type AIChatSessionsQueryRequest struct { Status *string `json:"status"` Pagination *paginator.Pagination `json:"pagination"` } type AIChatSessionsCreateRequest struct { Title string `json:"title" validate:"required,min=2,max=255"` AgentID *string `json:"agentId"` } func (req AIChatSessionsCreateRequest) ToEntity() *entity.AIChatSessions { return &entity.AIChatSessions{ AISessionID: "", // Will be generated in service layer AgentID: req.AgentID, Title: req.Title, MessageCount: 0, Status: "active", } } type AIChatSessionsUpdateRequest struct { Title string `json:"title" validate:"required,min=2,max=255"` Status string `json:"status" validate:"required,oneof=active archived deleted"` } func (req AIChatSessionsUpdateRequest) ToEntity() *entity.AIChatSessions { return &entity.AIChatSessions{ Title: req.Title, Status: req.Status, } } // AI Chat Messages Request DTOs type AIChatMessagesQueryRequest struct { SessionID uint `json:"sessionId" validate:"required"` Pagination *paginator.Pagination `json:"pagination"` } type AIChatMessagesCreateRequest struct { SessionID uint `json:"sessionId" validate:"required"` MessageType string `json:"messageType" validate:"required,oneof=user assistant"` Content string `json:"content" validate:"required,min=1"` } func (req AIChatMessagesCreateRequest) ToEntity() *entity.AIChatMessages { return &entity.AIChatMessages{ SessionID: req.SessionID, MessageType: req.MessageType, Content: req.Content, } } type AIChatMessagesUpdateRequest struct { Content string `json:"content" validate:"required,min=1"` } func (req AIChatMessagesUpdateRequest) ToEntity() *entity.AIChatMessages { return &entity.AIChatMessages{ Content: req.Content, } } type AIChatSessionsQueryRequestContext struct { Status string `json:"status"` } func (req AIChatSessionsQueryRequestContext) ToParamRequest() AIChatSessionsQueryRequest { var request AIChatSessionsQueryRequest if status := req.Status; status != "" { request.Status = &status } return request } 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 } // AI Chat Logs Request DTOs type AIChatLogsQueryRequest struct { LogType *string `json:"logType"` Pagination *paginator.Pagination `json:"pagination"` } type AIChatLogsQueryRequestContext struct { LogType string `json:"logType"` } func (req AIChatLogsQueryRequestContext) ToParamRequest() AIChatLogsQueryRequest { var request AIChatLogsQueryRequest if logType := req.LogType; logType != "" { request.LogType = &logType } return request }