focus-flow/packages/scheduler_persistence/lib/persistence/locked_block_repository.dart

64 lines
2.2 KiB
Dart

part of '../persistence.dart';
/// Repository contract for locked blocks and date-scoped overrides.
abstract interface class LockedBlockRepository {
/// Return the locked block with [blockId] in [ownerId], or null when absent.
Future<RepoResult<core.LockedBlock?>> findBlockById({
required core.OwnerId ownerId,
required String blockId,
});
/// Return owner-scoped locked blocks.
Future<RepoResult<core.Page<core.LockedBlock>>> findBlocksByOwner({
required core.OwnerId ownerId,
bool includeArchived = false,
core.PageRequest page = const core.PageRequest(),
});
/// Return the override with [overrideId] in [ownerId], or null when absent.
Future<RepoResult<core.LockedBlockOverride?>> findOverrideById({
required core.OwnerId ownerId,
required String overrideId,
});
/// Return owner-scoped overrides for [date].
Future<RepoResult<core.Page<core.LockedBlockOverride>>> findOverridesForDate({
required core.OwnerId ownerId,
required core.CivilDate date,
core.PageRequest page = const core.PageRequest(),
});
/// Insert [block] for [ownerId] and return the assigned revision.
Future<RepoResult<core.Revision>> insertBlock({
required core.OwnerId ownerId,
required core.LockedBlock block,
});
/// Save [block] if [expectedRevision] still matches the stored record.
Future<RepoResult<core.Revision>> saveBlock({
required core.OwnerId ownerId,
required core.LockedBlock block,
required core.Revision expectedRevision,
});
/// Archive [blockId] without deleting historical schedule context.
Future<RepoResult<core.Revision>> archiveBlock({
required core.OwnerId ownerId,
required String blockId,
required core.Revision expectedRevision,
required DateTime archivedAtUtc,
});
/// Insert [override] for [ownerId] and return the assigned revision.
Future<RepoResult<core.Revision>> insertOverride({
required core.OwnerId ownerId,
required core.LockedBlockOverride override,
});
/// Save [override] if [expectedRevision] still matches the stored record.
Future<RepoResult<core.Revision>> saveOverride({
required core.OwnerId ownerId,
required core.LockedBlockOverride override,
required core.Revision expectedRevision,
});
}