57 lines
1.9 KiB
Dart
57 lines
1.9 KiB
Dart
part of '../persistence.dart';
|
|
|
|
/// Repository contract for task records.
|
|
abstract interface class TaskRepository {
|
|
/// Return the task with [taskId] in [ownerId], or null when it is absent.
|
|
Future<RepoResult<core.Task?>> findById({
|
|
required core.OwnerId ownerId,
|
|
required String taskId,
|
|
});
|
|
|
|
/// Return owner-scoped tasks in deterministic adapter order.
|
|
Future<RepoResult<core.Page<core.Task>>> findByOwner({
|
|
required core.OwnerId ownerId,
|
|
core.PageRequest page = const core.PageRequest(),
|
|
});
|
|
|
|
/// Return owner-scoped tasks assigned to [projectId].
|
|
Future<RepoResult<core.Page<core.Task>>> findByProjectId({
|
|
required core.OwnerId ownerId,
|
|
required String projectId,
|
|
core.PageRequest page = const core.PageRequest(),
|
|
});
|
|
|
|
/// Return owner-scoped direct child tasks for [parentTaskId].
|
|
Future<RepoResult<core.Page<core.Task>>> findByParentTaskId({
|
|
required core.OwnerId ownerId,
|
|
required String parentTaskId,
|
|
core.PageRequest page = const core.PageRequest(),
|
|
});
|
|
|
|
/// Return owner-scoped tasks with [status].
|
|
Future<RepoResult<core.Page<core.Task>>> findByStatus({
|
|
required core.OwnerId ownerId,
|
|
required core.TaskStatus status,
|
|
core.PageRequest page = const core.PageRequest(),
|
|
});
|
|
|
|
/// Insert [task] for [ownerId] and return the assigned revision.
|
|
Future<RepoResult<core.Revision>> insert({
|
|
required core.OwnerId ownerId,
|
|
required core.Task task,
|
|
});
|
|
|
|
/// Save [task] if [expectedRevision] still matches the stored record.
|
|
Future<RepoResult<core.Revision>> save({
|
|
required core.OwnerId ownerId,
|
|
required core.Task task,
|
|
required core.Revision expectedRevision,
|
|
});
|
|
|
|
/// Remove [taskId] if [expectedRevision] still matches the stored record.
|
|
Future<RepoResult<core.Revision>> delete({
|
|
required core.OwnerId ownerId,
|
|
required String taskId,
|
|
required core.Revision expectedRevision,
|
|
});
|
|
}
|