Merged in feature/jobcrud (pull request #35)

Job CRUD + Collector Integration

* startedcreate

* openapispec

* createjobintegration

* jobgetcontroller

* jobcreateclient

* updatejob

* job

* collector
This commit is contained in:
Michael McGuinness
2025-01-24 14:52:56 +00:00
parent 5b7160fe44
commit 4ec1d51a12
40 changed files with 1775 additions and 403 deletions
+63
View File
@@ -0,0 +1,63 @@
package job
import (
"context"
"errors"
"queryorchestration/internal/database"
"queryorchestration/internal/database/repository"
"github.com/google/uuid"
)
type Update struct {
ID uuid.UUID
CanSync *bool
}
func (s *Service) Update(ctx context.Context, update *Update) error {
if update == nil {
return errors.New("Update required")
}
current, err := s.Get(ctx, update.ID)
if err != nil {
return err
}
err = s.normalizeCanSync(ctx, current, update)
if err != nil {
return err
}
if update.CanSync == nil {
return errors.New("no changes")
}
err = s.db.Queries.UpdateJob(ctx, &repository.UpdateJobParams{
ID: database.MustToDBUUID(update.ID),
Cansync: *update.CanSync,
})
if err != nil {
return err
}
return nil
}
func (s *Service) normalizeCanSync(ctx context.Context, current *Job, update *Update) error {
if update.CanSync == nil {
return nil
} else if current.CanSync == *update.CanSync {
update.CanSync = nil
return nil
}
client, err := s.svc.Client.Get(ctx, current.ClientID)
if err != nil {
return err
} else if !client.CanSync && *update.CanSync {
return errors.New("client not allowing sync")
}
return nil
}