narasiahli-be/app/module/knowledge_base/request/knowledge_base.request.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
}