Schema for DB Sync data transfers.
Tracks all data transfers between PhoenixKit instances, including both uploads (sending data) and downloads (receiving data).
Direction
"send"- This site sent data to another site"receive"- This site received data from another site
Status Flow
pending → pending_approval → approved → in_progress → completed
↘
denied
↘
expired (approval timed out)
pending → in_progress → completed
↘
failed
↘
cancelledRecord Tracking
The transfer tracks various record counts:
records_requested- Total records requestedrecords_transferred- Records actually transferredrecords_created- New records insertedrecords_updated- Existing records updatedrecords_skipped- Records skipped due to conflictsrecords_failed- Records that failed to import
Usage Examples
# Create a transfer record
{:ok, transfer} = Transfers.create_transfer(%{
direction: "receive",
connection_uuid: conn.uuid,
table_name: "users",
records_requested: 100,
conflict_strategy: "skip"
})
# Update transfer progress
{:ok, transfer} = Transfers.update_progress(transfer, %{
records_transferred: 50,
records_created: 45,
records_skipped: 5
})
# Complete a transfer
{:ok, transfer} = Transfers.complete_transfer(transfer)
Summary
Functions
Checks if a transfer is currently active.
Checks if a transfer's approval has expired.
Changeset for approving a transfer.
Checks if a transfer can be started.
Changeset for cancelling a transfer.
Creates a changeset for transfer creation.
Changeset for completing a transfer successfully.
Changeset for denying a transfer.
Calculates the transfer duration in seconds. Returns nil if transfer hasn't completed.
Changeset for marking a transfer approval as expired.
Changeset for marking a transfer as failed.
Checks if a transfer is pending approval.
Changeset for updating transfer progress.
Changeset for requesting approval.
Changeset for starting a transfer.
Calculates the success rate of a transfer. Returns a float between 0.0 and 1.0.
Checks if a transfer is in a terminal state.
Types
@type t() :: %PhoenixKit.Modules.Sync.Transfer{ __meta__: term(), approval_expires_at: term(), approved_at: term(), approved_by_user: term(), approved_by_uuid: term(), bytes_transferred: term(), completed_at: term(), conflict_strategy: term(), connection: term(), connection_uuid: term(), denial_reason: term(), denied_at: term(), denied_by_user: term(), denied_by_uuid: term(), direction: term(), error_message: term(), initiated_by_user: term(), initiated_by_uuid: term(), inserted_at: term(), metadata: term(), records_created: term(), records_failed: term(), records_requested: term(), records_skipped: term(), records_transferred: term(), records_updated: term(), remote_site_url: term(), requester_ip: term(), requester_user_agent: term(), requires_approval: term(), session_code: term(), started_at: term(), status: term(), table_name: term(), uuid: term() }
Functions
Checks if a transfer is currently active.
Checks if a transfer's approval has expired.
Changeset for approving a transfer.
Checks if a transfer can be started.
Changeset for cancelling a transfer.
Creates a changeset for transfer creation.
Changeset for completing a transfer successfully.
Changeset for denying a transfer.
Calculates the transfer duration in seconds. Returns nil if transfer hasn't completed.
Changeset for marking a transfer approval as expired.
Changeset for marking a transfer as failed.
Checks if a transfer is pending approval.
Changeset for updating transfer progress.
Changeset for requesting approval.
Changeset for starting a transfer.
Calculates the success rate of a transfer. Returns a float between 0.0 and 1.0.
Checks if a transfer is in a terminal state.