2026-01-14 01:29:35 +00:00
|
|
|
package mapper
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"narasi-ahli-be/app/database/entity"
|
2026-02-20 11:04:35 +00:00
|
|
|
"path/filepath"
|
|
|
|
|
|
2026-01-14 01:29:35 +00:00
|
|
|
res "narasi-ahli-be/app/module/knowledge_base/response"
|
|
|
|
|
)
|
|
|
|
|
|
2026-02-20 11:04:35 +00:00
|
|
|
func KnowledgeBaseResponseMapper(
|
|
|
|
|
kb *entity.KnowledgeBase,
|
|
|
|
|
host string,
|
|
|
|
|
) (out *res.KnowledgeBaseResponse) {
|
|
|
|
|
|
2026-01-14 01:29:35 +00:00
|
|
|
if kb == nil {
|
|
|
|
|
return nil
|
|
|
|
|
}
|
|
|
|
|
|
2026-02-20 11:04:35 +00:00
|
|
|
viewerBase := host + "/knowledge-base/viewer/"
|
|
|
|
|
|
|
|
|
|
var journalUrl, audioUrl, videoUrl *string
|
|
|
|
|
|
|
|
|
|
// JOURNAL
|
|
|
|
|
if kb.FileJournalUrl != nil && *kb.FileJournalUrl != "" {
|
|
|
|
|
filename := filepath.Base(*kb.FileJournalUrl)
|
|
|
|
|
url := viewerBase + filename
|
|
|
|
|
journalUrl = &url
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// AUDIO
|
|
|
|
|
if kb.FileAudioUrl != nil && *kb.FileAudioUrl != "" {
|
|
|
|
|
filename := filepath.Base(*kb.FileAudioUrl)
|
|
|
|
|
url := viewerBase + filename
|
|
|
|
|
audioUrl = &url
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// VIDEO
|
|
|
|
|
if kb.FileVideoUrl != nil && *kb.FileVideoUrl != "" {
|
|
|
|
|
filename := filepath.Base(*kb.FileVideoUrl)
|
|
|
|
|
url := viewerBase + filename
|
|
|
|
|
videoUrl = &url
|
|
|
|
|
}
|
|
|
|
|
|
2026-01-14 01:29:35 +00:00
|
|
|
out = &res.KnowledgeBaseResponse{
|
2026-02-20 11:04:35 +00:00
|
|
|
ID: kb.ID,
|
|
|
|
|
AgentId: kb.AgentId,
|
|
|
|
|
AgentName: kb.AgentName,
|
|
|
|
|
CreatedById: kb.CreatedById,
|
|
|
|
|
Title: kb.Title,
|
|
|
|
|
Status: kb.Status,
|
|
|
|
|
|
|
|
|
|
// 🔥 HANYA viewer URL yang dikirim
|
|
|
|
|
FileJournalUrl: journalUrl,
|
|
|
|
|
FileAudioUrl: audioUrl,
|
|
|
|
|
FileVideoUrl: videoUrl,
|
|
|
|
|
|
|
|
|
|
IsActive: kb.IsActive,
|
|
|
|
|
CreatedAt: kb.CreatedAt,
|
|
|
|
|
UpdatedAt: kb.UpdatedAt,
|
2026-01-14 01:29:35 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return out
|
|
|
|
|
}
|