using Data.SeaHavenIndustries; namespace SeaHaven.DataServices.Interfaces { public interface IWorkOrderIngestDataService { Task GetMaxWorkOrderIdAsync(CancellationToken cancellationToken); Task GetTrackedByExternalIdAsync(string externalWorkOrderId, CancellationToken cancellationToken); void TrackWorkOrder(WorkOrder workOrder); Task FindLocationAsync(string name, CancellationToken cancellationToken); Task AddAndSaveLocationAsync(Locations location, CancellationToken cancellationToken); // Stages (does not save) the sync-attributed cancellation of the work order's pending // uplifts, each with its own audit row. See PendingUpliftCancellation. Task StageCancelPendingUpliftsAsync(int workOrderId, CancellationToken cancellationToken); Task> GetWorkOrderIdsByExternalIdsAsync( IReadOnlyCollection externalWorkOrderIds, CancellationToken cancellationToken); // Runs the batch in one transaction, holding the per-work-order lock on // lockedWorkOrderIds (see WorkOrderMutationLock) until it commits or rolls back. Task ExecuteTransactionalAsync( IReadOnlyCollection lockedWorkOrderIds, Func work, CancellationToken cancellationToken); Task SaveAsync(CancellationToken cancellationToken); } }