Skip to content

factory

django_spire.contrib.sync.django.factory

build_client_engine

Source code in django_spire/contrib/sync/django/factory.py
def build_client_engine(
    models: list[type[SyncableMixin]],
    node_id: str,
    url: str,
    *,
    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,
    headers: dict[str, str] | 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,
) -> DatabaseEngine:
    resolved_clock, resolved_graph, reconciler, resolved_storage = _resolve_common(
        models,
        clock,
        graph,
        resolver,
        storage,
    )

    return DatabaseEngine(
        batch_bytes=batch_bytes,
        batch_size=batch_size,
        clock=resolved_clock,
        clock_drift_max=clock_drift_max,
        graph=resolved_graph,
        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=reconciler,
        storage=resolved_storage,
        transaction=transaction_fn,
        transport=HttpTransport(url=url, headers=headers or {}),
    )

build_server_engine

Source code in django_spire/contrib/sync/django/factory.py
def build_server_engine(
    models: list[type[SyncableMixin]],
    node_id: str,
    *,
    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,
) -> DatabaseEngine:
    resolved_clock, resolved_graph, reconciler, resolved_storage = _resolve_common(
        models,
        clock,
        graph,
        resolver,
        storage,
    )

    return DatabaseEngine(
        batch_bytes=batch_bytes,
        batch_size=batch_size,
        clock=resolved_clock,
        clock_drift_max=clock_drift_max,
        graph=resolved_graph,
        lock=lock or DjangoSyncLock(),
        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=reconciler,
        storage=resolved_storage,
        transaction=transaction_fn,
    )