fix(knowledge): Fix the issue of ineffective pagination parameters in the image-based knowledge base (#831)
This commit is contained in:
@@ -49,8 +49,9 @@ type baseDocProcessor struct {
|
||||
documentSource *entity.DocumentSource
|
||||
|
||||
// Drop DB model
|
||||
TableName string
|
||||
docModels []*model.KnowledgeDocument
|
||||
TableName string
|
||||
docModels []*model.KnowledgeDocument
|
||||
imageSlices []*model.KnowledgeDocumentSlice
|
||||
|
||||
storage storage.Storage
|
||||
knowledgeRepo repository.KnowledgeRepo
|
||||
@@ -69,14 +70,14 @@ func (p *baseDocProcessor) BeforeCreate() error {
|
||||
|
||||
func (p *baseDocProcessor) BuildDBModel() error {
|
||||
p.docModels = make([]*model.KnowledgeDocument, 0, len(p.Documents))
|
||||
ids, err := p.idgen.GenMultiIDs(p.ctx, len(p.Documents))
|
||||
if err != nil {
|
||||
logs.CtxErrorf(p.ctx, "gen ids failed, err: %v", err)
|
||||
return errorx.New(errno.ErrKnowledgeIDGenCode)
|
||||
}
|
||||
for i := range p.Documents {
|
||||
id, err := p.idgen.GenID(p.ctx)
|
||||
if err != nil {
|
||||
logs.CtxErrorf(p.ctx, "gen id failed, err: %v", err)
|
||||
return errorx.New(errno.ErrKnowledgeIDGenCode)
|
||||
}
|
||||
docModel := &model.KnowledgeDocument{
|
||||
ID: ids[i],
|
||||
ID: id,
|
||||
KnowledgeID: p.Documents[i].KnowledgeID,
|
||||
Name: p.Documents[i].Name,
|
||||
FileExtension: string(p.Documents[i].FileExtension),
|
||||
@@ -95,6 +96,23 @@ func (p *baseDocProcessor) BuildDBModel() error {
|
||||
}
|
||||
p.Documents[i].ID = docModel.ID
|
||||
p.docModels = append(p.docModels, docModel)
|
||||
if p.Documents[i].Type == knowledge.DocumentTypeImage {
|
||||
id, err := p.idgen.GenID(p.ctx)
|
||||
if err != nil {
|
||||
logs.CtxErrorf(p.ctx, "gen id failed, err: %v", err)
|
||||
return errorx.New(errno.ErrKnowledgeIDGenCode)
|
||||
}
|
||||
p.imageSlices = append(p.imageSlices, &model.KnowledgeDocumentSlice{
|
||||
ID: id,
|
||||
KnowledgeID: p.Documents[i].KnowledgeID,
|
||||
DocumentID: p.Documents[i].ID,
|
||||
CreatedAt: time.Now().UnixMilli(),
|
||||
UpdatedAt: time.Now().UnixMilli(),
|
||||
CreatorID: p.UserID,
|
||||
SpaceID: p.SpaceID,
|
||||
Status: int32(knowledge.SliceStatusInit),
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
@@ -142,6 +160,11 @@ func (p *baseDocProcessor) InsertDBModel() (err error) {
|
||||
logs.CtxErrorf(ctx, "create document failed, err: %v", err)
|
||||
return errorx.New(errno.ErrKnowledgeDBCode, errorx.KV("msg", err.Error()))
|
||||
}
|
||||
err = p.sliceRepo.BatchCreateWithTX(ctx, tx, p.imageSlices)
|
||||
if err != nil {
|
||||
logs.CtxErrorf(ctx, "update knowledge failed, err: %v", err)
|
||||
return errorx.New(errno.ErrKnowledgeDBCode, errorx.KV("msg", err.Error()))
|
||||
}
|
||||
err = p.knowledgeRepo.UpdateWithTx(ctx, tx, p.Documents[0].KnowledgeID, map[string]interface{}{
|
||||
"updated_at": time.Now().UnixMilli(),
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user