119 lines
3.0 KiB
Go
119 lines
3.0 KiB
Go
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
|
|
}
|