def __init__(
self,
models: list[type[SyncableMixin]],
identity_field: str = 'id',
batch_size_max: int = _BATCH_SIZE_MAX,
checkpoint_store: CheckpointStore | None = None,
deferred_foreign_keys: list[DeferredForeignKey] | None = None,
record_reader: RecordReader | None = None,
record_writer: RecordWriter | None = None,
sequence_allocator: SequenceAllocator | None = None,
) -> None:
self._checkpoint_store = checkpoint_store or DjangoCheckpointStore()
self._record_reader = record_reader or DjangoRecordReader(
models=models,
identity_field=identity_field,
)
self._record_writer = record_writer or DjangoRecordWriter(
models=models,
identity_field=identity_field,
batch_size_max=batch_size_max,
deferred_foreign_keys=deferred_foreign_keys,
)
self._sequence_allocator = (
sequence_allocator or
SyncSequenceAllocator()
)