2025-01-24 16:12:25 +00:00
|
|
|
package documentsync
|
2024-12-18 18:54:48 +00:00
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"context"
|
2024-12-24 17:13:48 +00:00
|
|
|
"queryorchestration/internal/database"
|
|
|
|
|
"queryorchestration/internal/database/repository"
|
2025-01-17 12:00:32 +00:00
|
|
|
"queryorchestration/internal/job/collector"
|
|
|
|
|
queryqueue "queryorchestration/internal/query/queue"
|
|
|
|
|
"queryorchestration/internal/query/result"
|
2024-12-19 18:49:22 +00:00
|
|
|
|
|
|
|
|
"github.com/google/uuid"
|
2024-12-18 18:54:48 +00:00
|
|
|
)
|
|
|
|
|
|
2024-12-20 17:35:33 +00:00
|
|
|
func (s *Service) Sync(ctx context.Context, doc *Document) error {
|
2025-01-21 12:28:46 +00:00
|
|
|
coll, err := s.svc.Collector.GetByJobID(ctx, doc.JobID)
|
2024-12-19 18:49:22 +00:00
|
|
|
if err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
|
2025-01-21 12:28:46 +00:00
|
|
|
results, err := s.getResults(ctx, doc.ID, coll)
|
2024-12-19 18:49:22 +00:00
|
|
|
if err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
|
2025-01-21 12:28:46 +00:00
|
|
|
queue, err := queryqueue.New(ctx, &queryqueue.NewConfig{
|
|
|
|
|
DB: s.db,
|
|
|
|
|
Collector: coll,
|
|
|
|
|
Results: results,
|
|
|
|
|
DocumentID: doc.ID,
|
|
|
|
|
CleanVersion: doc.CleanVersion,
|
|
|
|
|
TextVersion: doc.TextVersion,
|
|
|
|
|
})
|
2024-12-19 19:49:40 +00:00
|
|
|
if err != nil {
|
2024-12-20 17:35:33 +00:00
|
|
|
return err
|
2024-12-19 19:49:40 +00:00
|
|
|
}
|
|
|
|
|
|
2024-12-20 17:35:33 +00:00
|
|
|
err = queue.Execute(ctx)
|
2024-12-19 19:49:40 +00:00
|
|
|
if err != nil {
|
2024-12-20 17:35:33 +00:00
|
|
|
return err
|
2024-12-19 19:49:40 +00:00
|
|
|
}
|
|
|
|
|
|
2024-12-20 17:35:33 +00:00
|
|
|
return nil
|
|
|
|
|
}
|
2024-12-19 19:49:40 +00:00
|
|
|
|
2025-01-06 15:31:39 +00:00
|
|
|
func (s *Service) getResults(ctx context.Context, id uuid.UUID, coll *collector.Collector) ([]*result.Result, error) {
|
2024-12-23 18:13:57 +00:00
|
|
|
docID := database.MustToDBUUID(id)
|
2024-12-19 18:49:22 +00:00
|
|
|
|
2025-01-15 12:19:49 +00:00
|
|
|
results, err := s.db.Queries.ListResultsByDocumentID(ctx, &repository.ListResultsByDocumentIDParams{
|
2024-12-19 19:49:40 +00:00
|
|
|
Documentid: docID,
|
2024-12-20 17:35:33 +00:00
|
|
|
Textversion: coll.MinTextVersion,
|
|
|
|
|
Cleanversion: coll.MinCleanVersion,
|
2024-12-19 19:49:40 +00:00
|
|
|
})
|
2024-12-19 18:49:22 +00:00
|
|
|
if err != nil {
|
2024-12-19 19:49:40 +00:00
|
|
|
return nil, err
|
2024-12-19 18:49:22 +00:00
|
|
|
}
|
|
|
|
|
|
2025-01-06 15:31:39 +00:00
|
|
|
cleanResults := make([]*result.Result, len(results))
|
2024-12-20 17:35:33 +00:00
|
|
|
for index, dbResult := range results {
|
2025-01-15 12:19:49 +00:00
|
|
|
cleanResults[index] = result.Parse(dbResult)
|
2024-12-19 19:49:40 +00:00
|
|
|
}
|
|
|
|
|
|
2025-01-06 15:31:39 +00:00
|
|
|
return cleanResults, nil
|
2024-12-19 19:49:40 +00:00
|
|
|
}
|