58 lines
1.7 KiB
Go
58 lines
1.7 KiB
Go
package controller
|
|
|
|
import (
|
|
"context"
|
|
|
|
"rag-local/kb/consts"
|
|
"rag-local/kb/model/dto"
|
|
"rag-local/kb/service"
|
|
)
|
|
|
|
type document struct{}
|
|
|
|
var Document = &document{}
|
|
|
|
func (c *document) Upload(ctx context.Context, req *dto.UploadDocumentReq) (*dto.UploadDocumentRes, error) {
|
|
doc, err := service.DocumentService.Upload(ctx, req.DatasetId, req.File)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return &dto.UploadDocumentRes{Id: doc.Id}, nil
|
|
}
|
|
|
|
func (c *document) List(ctx context.Context, req *dto.ListDocumentReq) (*dto.ListDocumentRes, error) {
|
|
list, total, err := service.DocumentService.List(ctx, req.DatasetId, req.Page, req.PageSize)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return &dto.ListDocumentRes{
|
|
List: list,
|
|
Total: total,
|
|
Page: req.Page,
|
|
PageSize: req.PageSize,
|
|
}, nil
|
|
}
|
|
|
|
func (c *document) Detail(ctx context.Context, req *dto.GetDocumentDetailReq) (res *dto.GetDocumentDetailRes, err error) {
|
|
doc, err := service.DocumentService.Detail(ctx, req.Id)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return &dto.GetDocumentDetailRes{Document: doc}, nil
|
|
}
|
|
|
|
func (c *document) Delete(ctx context.Context, req *dto.DeleteDocumentReq) (*dto.DeleteDocumentRes, error) {
|
|
if err := service.DocumentService.Delete(ctx, req.Id); err != nil {
|
|
return nil, err
|
|
}
|
|
return &dto.DeleteDocumentRes{}, nil
|
|
}
|
|
|
|
func (c *document) Reembed(ctx context.Context, req *dto.ReembedDocumentReq) (*dto.ReembedDocumentRes, error) {
|
|
// 入队由轮询器串行消费,避免同步重算阻塞 HTTP 且无法展示过程状态;已排队/处理中会跳过
|
|
if err := service.ParseTaskService.Enqueue(ctx, req.Id, consts.TaskTypeReembed); err != nil {
|
|
return nil, err
|
|
}
|
|
return &dto.ReembedDocumentRes{}, nil
|
|
}
|