Datum class

Properties

allHealths Stream<Map<Type, DatumHealth>>
A stream that aggregates the health status of all registered managers.
no setter
config DatumConfig<DatumEntityInterface>
final
connectivityChecker DatumConnectivityChecker
final
currentMetrics DatumMetrics
no setter
events Stream<DatumSyncEvent<DatumEntityInterface>>
no setter
globalObservers List<GlobalDatumObserver>
final
hashCode int
The hash code for this object.
no setterinherited
logger DatumLogger
final
metrics Stream<DatumMetrics>
no setter
persistence DatumPersistence?
final
runtimeType Type
A representation of the runtime type of the object.
no setterinherited

Methods

addObserver(GlobalDatumObserver observer) → void
cascadeDelete<T extends DatumEntityInterface>({required String id, required String userId, DataSource source = DataSource.local, bool forceRemoteSync = false}) Future<CascadeDeleteResult<T>>
Deletes an entity with cascading behavior based on relationship configurations.
checkHealth<T extends DatumEntityInterface>() Future<DatumHealth>
create<T extends DatumEntityInterface>(T entity) Future<T>
Creates a new entity and pushes it to the appropriate manager.
createMany<T extends DatumEntityInterface>({required List<T> items, required String userId, bool andSync = false, DatumSyncOptions<T>? syncOptions}) Future<List<T>>
delete<T extends DatumEntityInterface>({required String id, required String userId}) Future<bool>
deleteAndSync<T extends DatumEntityInterface>({required String id, required String userId, DatumSyncOptions<T>? syncOptions}) Future<(bool, DatumSyncResult<T>)>
deleteCascade<T extends DatumEntityInterface>(String entityId) CascadeDeleteBuilder<T>
Creates a fluent API builder for cascade delete operations.
dispose() Future<void>
fetchRelated<P extends DatumEntityInterface, R extends DatumEntityInterface>(P parent, String relationName, {DataSource source = DataSource.local}) Future<List<R>>
Fetches related entities with proper type checking for RelationalDatumEntity
getColdStartActiveUsers<T extends DatumEntityInterface>() Set<String>
Gets all active users that have cold start state for the specified entity type.
getLastColdStartTimeForUser<T extends DatumEntityInterface>(String userId) DateTime?
Gets the last cold start time for the specified user and entity type.
getLastSyncResult<T extends DatumEntityInterface>(String userId) Future<DatumSyncResult<T>?>
getLastSyncTime(String userId) Future<DateTime?>
Gets the most recent last sync time across all registered entities for the specified user.
getPendingCount<T extends DatumEntityInterface>(String userId) Future<int>
getPendingOperations<T extends DatumEntityInterface>(String userId) Future<List<DatumSyncOperation<T>>>
getRemoteSyncMetadata<T extends DatumEntityInterface>(String userId) Future<DatumSyncMetadata?>
Fetches sync metadata from the remote server for the specified entity type.
getStorageSize<T extends DatumEntityInterface>({String? userId}) Future<int>
getUnifiedSyncMetadata(String userId) Future<DatumSyncMetadata?>
Gets unified sync metadata across all entities for the specified user.
handleColdStartIfNeeded<T extends DatumEntityInterface>(String? userId, Future<DatumSyncResult<T>> syncFunction(DatumSyncOptions<DatumEntityInterface>), {bool synchronous = false}) Future<bool>
Handles cold start synchronization if needed for the specified user and entity type.
isColdStartForUser<T extends DatumEntityInterface>(String userId) bool
Checks if this is a cold start for the specified user and entity type.
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
pauseSync() → void
pushAndSync<T extends DatumEntityInterface>({required T item, required String userId, DatumSyncOptions<T>? syncOptions}) Future<(T, DatumSyncResult<T>)>
query<T extends DatumEntityInterface>(DatumQuery query, {required DataSource source, String? userId}) Future<List<T>>
read<T extends DatumEntityInterface>(String id, {String? userId}) Future<T?>
readAll<T extends DatumEntityInterface>({String? userId}) Future<List<T>>
register<T extends DatumEntityInterface>({required DatumRegistration<T> registration}) Future<void>
resetColdStartForUser<T extends DatumEntityInterface>(String userId) → void
Resets cold start state for the specified user and entity type.
resubscribeAllToRemoteChanges() Future<void>
Re-subscribes all managers to remote change events.
resumeSync() → void
startAutoSync(String userId) → void
Starts automatic periodic synchronization for the specified user across all managers.
statusForUser(String userId) Stream<DatumSyncStatusSnapshot?>
synchronize(String userId, {DatumSyncOptions<DatumEntityInterface>? options}) Future<DatumSyncResult<DatumEntityInterface>>
A global sync that can coordinate across all managers.
toString() String
A string representation of this object.
inherited
unsubscribeAllFromRemoteChanges() Future<void>
Unsubscribes all managers from remote change events.
update<T extends DatumEntityInterface>(T entity) Future<T>
updateAndSync<T extends DatumEntityInterface>({required T item, required String userId, DatumSyncOptions<T>? syncOptions}) Future<(T, DatumSyncResult<T>)>
updateMany<T extends DatumEntityInterface>({required List<T> items, required String userId, bool andSync = false, DatumSyncOptions<T>? syncOptions}) Future<List<T>>
watchAll<T extends DatumEntityInterface>({String? userId, bool includeInitialData = true}) Stream<List<T>>?
watchAllPaginated<T extends DatumEntityInterface>(PaginationConfig config, {String? userId}) Stream<PaginatedResult<T>>?
watchById<T extends DatumEntityInterface>(String id, String? userId) Stream<T?>?
watchQuery<T extends DatumEntityInterface>(DatumQuery query, {String? userId}) Stream<List<T>>?
watchRelated<P extends DatumEntityInterface, R extends DatumEntityInterface>(P parent, String relationName) Stream<List<R>>?
Reactively watches related entities with proper type checking
watchStorageSize<T extends DatumEntityInterface>({String? userId}) Stream<int>

Operators

operator ==(Object other) bool
The equality operator.
inherited

Static Properties

instance Datum
no setter
instanceOrNull Datum?
no setter
isInitialized bool
no setter

Static Methods

initialize({required DatumConfig<DatumEntityInterface> config, required DatumConnectivityChecker connectivityChecker, DatumPersistence? persistence, DatumLogger? logger, List<DatumRegistration<DatumEntityInterface>> registrations = const [], List<GlobalDatumObserver> observers = const []}) Future<DatumEither<Object, Datum>>
Initializes the central Datum engine as a singleton.
manager<T extends DatumEntityInterface>() DatumManager<T>
Provides access to the specific manager for an entity type.
managerByType(Type type) DatumManager<DatumEntityInterface>
Provides access to a manager for a given entity Type.
resetForTesting() → void