Skip to content

client

django_spire.contrib.sync.django.client

SyncClient

Source code in django_spire/contrib/sync/django/client.py
def __init__(
    self,
    models: list[type[SyncableMixin]],
    node_id: str,
    transport: Transport,
    *,
    batch_bytes: int | None = BATCH_BYTES_DEFAULT,
    batch_size: int | None = None,
    clock: HybridLogicalClock | None = None,
    clock_drift_max: int | None = 300,
    graph: DependencyGraph | None = None,
    lock: SyncLock | None = None,
    on_complete: Callable[[DatabaseResult], None] | None = None,
    on_phase: Callable[[SyncPhase], None] | None = None,
    payload_bytes_max: int | None = None,
    payload_records_max: int | None = None,
    progress: Callable[[SyncStage, int, int], None] | None = None,
    resolver: ConflictResolver | None = None,
    storage: DatabaseSyncStorage | None = None,
    transaction_fn: Callable[[], AbstractContextManager[Any]] = transaction.atomic,
) -> None:
    self._engine = DatabaseEngine(
        batch_bytes=batch_bytes,
        batch_size=batch_size,
        clock=clock or SyncableMixin.get_clock(),
        clock_drift_max=clock_drift_max,
        graph=graph or build_graph(models),
        node_id=node_id,
        on_complete=on_complete,
        on_phase=on_phase,
        payload_bytes_max=payload_bytes_max,
        payload_records_max=payload_records_max,
        progress=progress,
        reconciler=PayloadReconciler(
            resolver=resolver or
            FieldTimestampWins(),
        ),
        storage=storage or DjangoSyncStorage(models=models),
        transaction=transaction_fn,
        transport=transport,
    )

sync

Source code in django_spire/contrib/sync/django/client.py
def sync(self, dry_run: bool = False) -> DatabaseResult:
    return self._engine.sync(dry_run=dry_run)