DatumConfig<T extends DatumEntityInterface> class

Configuration for the Datum engine and its managers.

Implementers

Constructors

DatumConfig({Duration autoSyncInterval = const Duration(minutes: 15), bool autoStartSync = false, Duration syncTimeout = const Duration(minutes: 2), DatumConflictResolver<T>? defaultConflictResolver, UserSwitchStrategy defaultUserSwitchStrategy = UserSwitchStrategy.syncThenSwitch, Future<String?> initialUserId()?, bool enableLogging = true, SyncDirection defaultSyncDirection = SyncDirection.pushThenPull, int schemaVersion = 0, List<Migration> migrations = const [], DatumSyncExecutionStrategy syncExecutionStrategy = const SequentialStrategy(), MigrationErrorHandler? onMigrationError, DatumSyncRequestStrategy syncRequestStrategy = const SequentialRequestStrategy(), DatumErrorRecoveryStrategy errorRecoveryStrategy = const DatumErrorRecoveryStrategy(shouldRetry: _defaultShouldRetry, maxRetries: 3, backoffStrategy: ExponentialBackoff()), Duration remoteEventDebounceTime = const Duration(milliseconds: 50), Duration changeCacheDuration = const Duration(seconds: 5), DatumSyncOptions<T>? defaultSyncOptions, int maxChangeCacheSize = 1000, Duration changeCacheCleanupInterval = const Duration(seconds: 30), int remoteSyncBatchSize = 100, int remoteStreamBatchSize = 50, int progressEventFrequency = 50, LogLevel logLevel = LogLevel.info, bool enablePerformanceLogging = false, Duration performanceLogThreshold = const Duration(milliseconds: 100), Map<String, LogSampler> logSamplers = const {}, SyncDirectionResolver? syncDirectionResolver, ColdStartConfig coldStartConfig = const ColdStartConfig(), DeleteBehavior deleteBehavior = DeleteBehavior.hardDelete, int maxQueryCacheSize = 100, int maxRelationshipQueryCacheSize = 200, int maxEntityExistenceCacheSize = 500, bool useIsolateSync = false})
const
DatumConfig.defaultConfig()
A default configuration with sensible production values.
factory

Properties

autoStartSync → bool
Whether to automatically start auto-sync for all users with local data upon initialization.
final
autoSyncInterval → Duration
The interval for any automatic background synchronization.
final
changeCacheCleanupInterval → Duration
The interval for periodic cleanup of the change cache. This is in addition to the immediate cleanup based on changeCacheDuration.
final
changeCacheDuration → Duration
The duration to keep a change ID in the cache to prevent duplicate processing.
final
coldStartConfig → ColdStartConfig
Configuration for cold start synchronization behavior. Determines how the system handles sync when the app is fully closed and reopened.
final
defaultConflictResolver → DatumConflictResolver<T>?
The default conflict resolver to use if none is provided per-operation. If null, LastWriteWinsResolver is used.
final
defaultSyncDirection → SyncDirection
The default direction for synchronization.
final
defaultSyncOptions → DatumSyncOptions<T>?
Default sync options to use when none are provided to synchronize(). These options will be merged with any options passed to individual sync calls.
final
defaultUserSwitchStrategy → UserSwitchStrategy
The default strategy to use when switching users.
final
deleteBehavior → DeleteBehavior
Defines the behavior for delete operations. Defaults to DeleteBehavior.hardDelete.
final
enableLogging → bool
Whether to enable detailed logging from the Datum engine.
final
enablePerformanceLogging → bool
Whether to enable performance logging for operations exceeding thresholds.
final
errorRecoveryStrategy → DatumErrorRecoveryStrategy
The strategy for handling errors and retries during synchronization.
final
hashCode → int
The hash code for this object.
no setterinherited
initialUserId → Future<String?> Function()?
The user ID to target for the initial auto-sync if autoStartSync is true. A function that returns a Future<String?> to get the current user ID. If the function returns null, DatumManager will discover all users with local data. If null, DatumManager will discover all users with local data.
final
logLevel → LogLevel
The minimum log level for logging output.
final
logSamplers → Map<String, LogSampler>
Sampling strategies for high-frequency log operations.
final
maxChangeCacheSize → int
The maximum number of entries to keep in the change cache. When exceeded, older entries are removed to prevent unbounded memory growth.
final
maxEntityExistenceCacheSize → int
The maximum size of the entity existence cache.
final
maxQueryCacheSize → int
The maximum size of the query cache.
final
maxRelationshipQueryCacheSize → int
The maximum size of the relationship query cache.
final
migrations → List<Migration>
A list of Migration classes to be run when the schemaVersion is incremented.
final
onMigrationError → MigrationErrorHandler?
A callback to handle failures during schema migration.
final
performanceLogThreshold → Duration
The duration threshold for performance logging.
final
progressEventFrequency → int
The frequency of progress event emissions during sync operations. Progress events are emitted every N items processed.
final
props → List<Object?>
The list of properties that will be used to determine whether two instances are equal.
no setter
remoteEventDebounceTime → Duration
The duration to buffer remote changes before processing a batch. Helps to group rapid-fire updates from a server push into a single operation.
final
remoteStreamBatchSize → int
The batch size for streaming remote items from adapters. Smaller batches reduce memory usage but may increase processing overhead.
final
remoteSyncBatchSize → int
The batch size for processing remote changes during sync operations. Larger batches reduce memory overhead but may increase latency.
final
runtimeType → Type
A representation of the runtime type of the object.
no setterinherited
schemaVersion → int
The current version of the data schema for migration purposes.
final
stringify → bool?
If set to true, the toString method will be overridden to output this instance's props.
no setterinherited
syncDirectionResolver → SyncDirectionResolver?
A callback that allows customizing the sync direction based on pending operations.
final
syncExecutionStrategy → DatumSyncExecutionStrategy
The execution strategy for processing the sync queue.
final
syncRequestStrategy → DatumSyncRequestStrategy
The strategy for handling concurrent calls to the synchronize method. Defaults to SequentialRequestStrategy.
final
syncTimeout → Duration
The maximum duration for a single sync cycle before it times out.
final
useIsolateSync → bool
Whether to offload the entire synchronization process to a background isolate.
final

Methods

copyWith<E extends DatumEntityInterface>({Duration? autoSyncInterval, bool? autoStartSync, Duration? syncTimeout, DatumConflictResolver<E>? defaultConflictResolver, UserSwitchStrategy? defaultUserSwitchStrategy, Future<String?> initialUserId()?, bool? enableLogging, SyncDirection? defaultSyncDirection, int? schemaVersion, List<Migration>? migrations, DatumSyncExecutionStrategy? syncExecutionStrategy, MigrationErrorHandler? onMigrationError, DatumSyncRequestStrategy? syncRequestStrategy, DatumErrorRecoveryStrategy? errorRecoveryStrategy, Duration? remoteEventDebounceTime, Duration? changeCacheDuration, DatumSyncOptions<E>? defaultSyncOptions, int? maxChangeCacheSize, Duration? changeCacheCleanupInterval, int? remoteSyncBatchSize, int? remoteStreamBatchSize, int? progressEventFrequency, LogLevel? logLevel, bool? enablePerformanceLogging, Duration? performanceLogThreshold, Map<String, LogSampler>? logSamplers, SyncDirectionResolver? syncDirectionResolver, ColdStartConfig? coldStartConfig, DeleteBehavior? deleteBehavior, int? maxQueryCacheSize, int? maxRelationshipQueryCacheSize, int? maxEntityExistenceCacheSize, bool? useIsolateSync}) → DatumConfig<E>
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
toString() → String
A string representation of this object.

Operators

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