migrate from github
This commit is contained in:
@@ -0,0 +1,73 @@
|
||||
package document_service
|
||||
|
||||
import (
|
||||
"context"
|
||||
"time"
|
||||
|
||||
"github.com/XingfenD/yoresee_doc/internal/dto"
|
||||
"github.com/XingfenD/yoresee_doc/internal/model"
|
||||
"github.com/XingfenD/yoresee_doc/internal/status"
|
||||
)
|
||||
|
||||
func (s *DocumentService) RecordRecentDocument(req *dto.RecordRecentDocumentRequest) error {
|
||||
if req == nil || req.UserExternalID == "" || req.DocumentExternalID == "" {
|
||||
return status.StatusInternalParamsError
|
||||
}
|
||||
userID, err := s.userRepo.GetIDByExternalID(req.UserExternalID).Exec()
|
||||
if err != nil {
|
||||
return status.StatusUserNotFound
|
||||
}
|
||||
|
||||
docID, err := s.documentRepo.GetIDByExternalID(req.DocumentExternalID).Exec(context.Background())
|
||||
if err != nil || docID == 0 {
|
||||
return status.StatusDocumentNotFound
|
||||
}
|
||||
|
||||
if err := s.documentRepo.UpsertRecentDocument(&model.RecentDocument{
|
||||
UserID: userID,
|
||||
DocumentID: docID,
|
||||
AccessedAt: time.Now(),
|
||||
}).Exec(); err != nil {
|
||||
return status.StatusWriteDBError
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (s *DocumentService) ListRecentDocuments(req *dto.ListRecentDocumentsRequest) ([]*dto.DocumentResponse, int64, error) {
|
||||
if req == nil || req.UserExternalID == "" {
|
||||
return nil, 0, status.StatusInternalParamsError
|
||||
}
|
||||
userID, err := s.userRepo.GetIDByExternalID(req.UserExternalID).Exec()
|
||||
if err != nil {
|
||||
return nil, 0, status.StatusUserNotFound
|
||||
}
|
||||
|
||||
recentRecords, total, err := s.documentRepo.ListRecentDocuments(userID).
|
||||
WithTimeRange(req.StartTime, req.EndTime).
|
||||
WithPagination(req.Pagination.Page, req.Pagination.PageSize).
|
||||
Exec()
|
||||
if err != nil {
|
||||
return nil, 0, status.StatusReadDBError
|
||||
}
|
||||
|
||||
if len(recentRecords) == 0 {
|
||||
return []*dto.DocumentResponse{}, total, nil
|
||||
}
|
||||
|
||||
docIDs := make([]int64, 0, len(recentRecords))
|
||||
for _, record := range recentRecords {
|
||||
docIDs = append(docIDs, record.DocumentID)
|
||||
}
|
||||
|
||||
docModels, err := s.documentRepo.MGetByIDs(docIDs)
|
||||
if err != nil {
|
||||
return nil, 0, status.StatusReadDBError
|
||||
}
|
||||
|
||||
resp := make([]*dto.DocumentResponse, 0, len(docModels))
|
||||
for _, doc := range docModels {
|
||||
resp = append(resp, dto.NewDocumentResponseFromModel(doc))
|
||||
}
|
||||
|
||||
return resp, total, nil
|
||||
}
|
||||
Reference in New Issue
Block a user