migrate from github
This commit is contained in:
@@ -0,0 +1,84 @@
|
||||
package document_service
|
||||
|
||||
import (
|
||||
"context"
|
||||
"strings"
|
||||
|
||||
"github.com/XingfenD/yoresee_doc/internal/dto"
|
||||
"github.com/XingfenD/yoresee_doc/internal/status"
|
||||
"github.com/sirupsen/logrus"
|
||||
)
|
||||
|
||||
func (s *DocumentService) ListDocumentVersions(ctx context.Context, documentExternalID string, page, pageSize int32) ([]*dto.DocumentVersionResponse, int64, error) {
|
||||
if s == nil || strings.TrimSpace(documentExternalID) == "" {
|
||||
return nil, 0, status.GenErrWithCustomMsg(status.StatusParamError, "invalid list document versions request")
|
||||
}
|
||||
|
||||
p := int(page)
|
||||
if p <= 0 {
|
||||
p = 1
|
||||
}
|
||||
ps := int(pageSize)
|
||||
if ps <= 0 {
|
||||
ps = 20
|
||||
}
|
||||
if ps > 100 {
|
||||
ps = 100
|
||||
}
|
||||
offset := (p - 1) * ps
|
||||
|
||||
documentID, err := s.documentRepo.GetIDByExternalID(documentExternalID).Exec(ctx)
|
||||
if err != nil {
|
||||
logrus.Errorf("[Service layer: DocumentService] query document id for list versions failed, document_external_id=%s, err=%+v", documentExternalID, err)
|
||||
return nil, 0, status.GenErrWithCustomMsg(status.StatusReadDBError, "query document failed")
|
||||
}
|
||||
if documentID <= 0 {
|
||||
return nil, 0, status.GenErrWithCustomMsg(status.StatusDocumentNotFound, "document not found")
|
||||
}
|
||||
|
||||
items, total, err := s.docVersionRepo.ListByDocumentID(documentID, offset, ps)
|
||||
if err != nil {
|
||||
logrus.Errorf("[Service layer: DocumentService] list document versions failed, document_external_id=%s, document_id=%d, err=%+v", documentExternalID, documentID, err)
|
||||
return nil, 0, status.GenErrWithCustomMsg(status.StatusReadDBError, "list document versions failed")
|
||||
}
|
||||
|
||||
resp := make([]*dto.DocumentVersionResponse, 0, len(items))
|
||||
for _, item := range items {
|
||||
resp = append(resp, &dto.DocumentVersionResponse{
|
||||
Version: item.Version,
|
||||
Title: item.Title,
|
||||
ChangeSummary: item.ChangeSummary,
|
||||
CreatedAt: item.CreatedAt,
|
||||
})
|
||||
}
|
||||
return resp, total, nil
|
||||
}
|
||||
|
||||
func (s *DocumentService) GetDocumentVersionContent(ctx context.Context, documentExternalID string, version int32) (*dto.DocumentVersionResponse, error) {
|
||||
if s == nil || strings.TrimSpace(documentExternalID) == "" || version <= 0 {
|
||||
return nil, status.GenErrWithCustomMsg(status.StatusParamError, "invalid get document version request")
|
||||
}
|
||||
|
||||
documentID, err := s.documentRepo.GetIDByExternalID(documentExternalID).Exec(ctx)
|
||||
if err != nil {
|
||||
logrus.Errorf("[Service layer: DocumentService] query document id for get version failed, document_external_id=%s, err=%+v", documentExternalID, err)
|
||||
return nil, status.GenErrWithCustomMsg(status.StatusReadDBError, "query document failed")
|
||||
}
|
||||
if documentID <= 0 {
|
||||
return nil, status.GenErrWithCustomMsg(status.StatusDocumentNotFound, "document not found")
|
||||
}
|
||||
|
||||
item, err := s.docVersionRepo.GetByDocumentIDAndVersion(documentID, int(version))
|
||||
if err != nil {
|
||||
logrus.Errorf("[Service layer: DocumentService] get document version failed, document_external_id=%s, document_id=%d, version=%d, err=%+v", documentExternalID, documentID, version, err)
|
||||
return nil, status.GenErrWithCustomMsg(status.StatusDocumentNotFound, "document version not found")
|
||||
}
|
||||
|
||||
return &dto.DocumentVersionResponse{
|
||||
Version: item.Version,
|
||||
Title: item.Title,
|
||||
Content: item.Content,
|
||||
ChangeSummary: item.ChangeSummary,
|
||||
CreatedAt: item.CreatedAt,
|
||||
}, nil
|
||||
}
|
||||
Reference in New Issue
Block a user