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, thetoStringmethod will be overridden to output this instance'sprops.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
synchronizemethod. 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