126 lines
3.2 KiB
Go
126 lines
3.2 KiB
Go
|
|
package request
|
||
|
|
|
||
|
|
import (
|
||
|
|
"narasi-ahli-be/app/database/entity"
|
||
|
|
"narasi-ahli-be/utils/paginator"
|
||
|
|
"strconv"
|
||
|
|
"time"
|
||
|
|
)
|
||
|
|
|
||
|
|
type KnowledgeBaseGeneric interface {
|
||
|
|
ToEntity() *entity.KnowledgeBase
|
||
|
|
}
|
||
|
|
|
||
|
|
type KnowledgeBaseQueryRequest struct {
|
||
|
|
AgentId *string `json:"agentId"`
|
||
|
|
Title *string `json:"title"`
|
||
|
|
Status *int `json:"status"`
|
||
|
|
IsActive *bool `json:"isActive"`
|
||
|
|
CreatedById *uint `json:"createdById"`
|
||
|
|
Pagination *paginator.Pagination `json:"pagination"`
|
||
|
|
}
|
||
|
|
|
||
|
|
type KnowledgeBaseUpdateStatusRequest struct {
|
||
|
|
Status int `json:"status" validate:"required"`
|
||
|
|
}
|
||
|
|
|
||
|
|
type KnowledgeBaseCreateRequest struct {
|
||
|
|
AgentId *string `form:"agentId" validate:"required"`
|
||
|
|
AgentName *string `form:"agentName" validate:"required"`
|
||
|
|
CreatedById uint `form:"createdById" validate:"required"`
|
||
|
|
Title *string `form:"title" validate:"required"`
|
||
|
|
Status int `form:"status" validate:"required"`
|
||
|
|
}
|
||
|
|
|
||
|
|
func (req KnowledgeBaseCreateRequest) ToEntity() *entity.KnowledgeBase {
|
||
|
|
kb := &entity.KnowledgeBase{
|
||
|
|
AgentId: req.AgentId,
|
||
|
|
AgentName: req.AgentName,
|
||
|
|
CreatedById: req.CreatedById,
|
||
|
|
Title: req.Title,
|
||
|
|
Status: req.Status,
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
return kb
|
||
|
|
}
|
||
|
|
|
||
|
|
type KnowledgeBaseUpdateRequest struct {
|
||
|
|
ID uint `json:"id" validate:"required"`
|
||
|
|
|
||
|
|
AgentId *string `json:"agentId" validate:"required"`
|
||
|
|
AgentName *string `json:"agentName" validate:"required"`
|
||
|
|
Title *string `json:"title" validate:"required"`
|
||
|
|
Status int `json:"status" validate:"required"`
|
||
|
|
|
||
|
|
FileJournalUrl *string `json:"fileJournalUrl"`
|
||
|
|
FileAudioUrl *string `json:"fileAudioUrl"`
|
||
|
|
FileVideoUrl *string `json:"fileVideoUrl"`
|
||
|
|
|
||
|
|
IsActive *bool `json:"isActive"`
|
||
|
|
}
|
||
|
|
|
||
|
|
func (req KnowledgeBaseUpdateRequest) ToEntity() *entity.KnowledgeBase {
|
||
|
|
kb := &entity.KnowledgeBase{
|
||
|
|
ID: req.ID,
|
||
|
|
AgentId: req.AgentId,
|
||
|
|
AgentName: req.AgentName,
|
||
|
|
Title: req.Title,
|
||
|
|
Status: req.Status,
|
||
|
|
FileJournalUrl: req.FileJournalUrl,
|
||
|
|
FileAudioUrl: req.FileAudioUrl,
|
||
|
|
FileVideoUrl: req.FileVideoUrl,
|
||
|
|
UpdatedAt: time.Now(),
|
||
|
|
}
|
||
|
|
|
||
|
|
if req.IsActive != nil {
|
||
|
|
kb.IsActive = *req.IsActive
|
||
|
|
}
|
||
|
|
|
||
|
|
return kb
|
||
|
|
}
|
||
|
|
|
||
|
|
type KnowledgeBaseQueryRequestContext struct {
|
||
|
|
AgentId string `json:"agentId"`
|
||
|
|
Title string `json:"title"`
|
||
|
|
Status string `json:"status"`
|
||
|
|
IsActive string `json:"isActive"`
|
||
|
|
CreatedById string `json:"createdById"`
|
||
|
|
}
|
||
|
|
|
||
|
|
func (req KnowledgeBaseQueryRequestContext) ToParamRequest() KnowledgeBaseQueryRequest {
|
||
|
|
var request KnowledgeBaseQueryRequest
|
||
|
|
|
||
|
|
if agentId := req.AgentId; agentId != "" {
|
||
|
|
request.AgentId = &agentId
|
||
|
|
}
|
||
|
|
|
||
|
|
if title := req.Title; title != "" {
|
||
|
|
request.Title = &title
|
||
|
|
}
|
||
|
|
|
||
|
|
if statusStr := req.Status; statusStr != "" {
|
||
|
|
status, err := strconv.Atoi(statusStr)
|
||
|
|
if err == nil {
|
||
|
|
request.Status = &status
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
if isActiveStr := req.IsActive; isActiveStr != "" {
|
||
|
|
isActive, err := strconv.ParseBool(isActiveStr)
|
||
|
|
if err == nil {
|
||
|
|
request.IsActive = &isActive
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
if createdByIdStr := req.CreatedById; createdByIdStr != "" {
|
||
|
|
id64, err := strconv.ParseUint(createdByIdStr, 10, 32)
|
||
|
|
if err == nil {
|
||
|
|
uid := uint(id64)
|
||
|
|
request.CreatedById = &uid
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
return request
|
||
|
|
}
|