35 lines
1.0 KiB
Go
35 lines
1.0 KiB
Go
package knowledge_base_service
|
|
|
|
import (
|
|
"github.com/XingfenD/yoresee_doc/internal/dto"
|
|
"github.com/XingfenD/yoresee_doc/internal/model"
|
|
"github.com/XingfenD/yoresee_doc/internal/status"
|
|
"github.com/XingfenD/yoresee_doc/internal/utils"
|
|
)
|
|
|
|
func (s *KnowledgeBaseService) Create(req *dto.CreateKnowledgeBaseRequest) (*dto.CreateKnowledgeBaseResponse, error) {
|
|
if req == nil || req.Name == "" {
|
|
return nil, status.StatusParamError
|
|
}
|
|
|
|
userID, err := s.userRepo.GetIDByExternalID(req.CreatorExternalID).Exec()
|
|
if err != nil {
|
|
return nil, status.StatusUserNotFound
|
|
}
|
|
|
|
kbModel := &model.KnowledgeBase{
|
|
ExternalID: utils.GenerateExternalID(utils.ExternalIDKnowledgeBase),
|
|
Name: req.Name,
|
|
Description: req.Description,
|
|
Cover: req.Cover,
|
|
IsPublic: req.IsPublic,
|
|
CreatorUserID: userID,
|
|
}
|
|
|
|
if err := s.knowledgeBaseRepo.Create(kbModel).Exec(); err != nil {
|
|
return nil, status.StatusWriteDBError
|
|
}
|
|
|
|
return &dto.CreateKnowledgeBaseResponse{ExternalID: kbModel.ExternalID}, nil
|
|
}
|