Files
query-orchestration/internal/document/service.go
T
2024-12-19 18:49:22 +00:00

69 lines
1.3 KiB
Go

package document
import (
"context"
"gotemplate/internal/database"
"gotemplate/internal/database/repository"
"log"
"github.com/google/uuid"
)
type Service struct {
db *repository.Queries
}
type Document struct {
ID uuid.UUID `json:"id"`
JobID uuid.UUID `json:"jobId"`
Name string `json:"name"`
}
func New(ctx context.Context, db *repository.Queries) *Service {
return &Service{
db: db,
}
}
func (s *Service) Sync(ctx context.Context, doc Document) error {
jobID, err := database.ToDBUUID(doc.JobID)
if err != nil {
return err
}
queries, err := s.db.GetQueriesFromJobID(ctx, jobID)
if err != nil {
return err
}
docID, err := database.ToDBUUID(doc.ID)
if err != nil {
return err
}
results, err := s.db.ListResultsByDocumentID(ctx, docID)
if err != nil {
return err
}
for _, query := range queries {
isSynced := false
for _, result := range results {
if result.Queryid != query.ID {
continue
}
isSynced = result.Cleanversion >= query.Mincleanversion && result.Textversion >= query.Mintextversion && result.Queryversion != query.Queryversion
break
}
if isSynced {
continue
}
log.Print("TODO sync me pls")
// Check if exists and synced
// IF NOT synced then add to queue, as well as all dependents recursively
}
// TODO what to do with results that are not used
return nil
}