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})
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
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

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}) 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