PhoenixKitSync.Transfer (PhoenixKitSync v0.1.4)

Copy Markdown View Source

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
                     
                     cancelled

Record Tracking

The transfer tracks various record counts:

  • records_requested - Total records requested
  • records_transferred - Records actually transferred
  • records_created - New records inserted
  • records_updated - Existing records updated
  • records_skipped - Records skipped due to conflicts
  • records_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.

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 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

t()

@type t() :: %PhoenixKitSync.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

active?(arg1)

@spec active?(t() | any()) :: boolean()

Checks if a transfer is currently active.

approval_expired?(transfer)

@spec approval_expired?(t()) :: boolean()

Checks if a transfer's approval has expired.

approve_changeset(transfer, admin_user_uuid)

@spec approve_changeset(t(), String.t() | map() | nil) :: Ecto.Changeset.t()

Changeset for approving a transfer.

can_start?(arg1)

@spec can_start?(t() | any()) :: boolean()

Checks if a transfer can be started.

cancel_changeset(transfer)

@spec cancel_changeset(t()) :: Ecto.Changeset.t()

Changeset for cancelling a transfer.

changeset(transfer, attrs)

@spec changeset(t() | Ecto.Changeset.t(), map()) :: Ecto.Changeset.t()

Creates a changeset for transfer creation.

complete_changeset(transfer, attrs \\ %{})

@spec complete_changeset(t(), map()) :: Ecto.Changeset.t()

Changeset for completing a transfer successfully.

deny_changeset(transfer, admin_user_uuid, reason \\ nil)

@spec deny_changeset(t(), String.t() | map() | nil, String.t() | nil) ::
  Ecto.Changeset.t()

Changeset for denying a transfer.

duration_seconds(transfer)

@spec duration_seconds(t()) :: non_neg_integer() | nil

Calculates the transfer duration in seconds. Returns nil if transfer hasn't completed.

expire_changeset(transfer)

@spec expire_changeset(t()) :: Ecto.Changeset.t()

Changeset for marking a transfer approval as expired.

fail_changeset(transfer, error_message)

@spec fail_changeset(t(), String.t()) :: Ecto.Changeset.t()

Changeset for marking a transfer as failed.

pending_approval?(arg1)

@spec pending_approval?(t() | any()) :: boolean()

Checks if a transfer is pending approval.

progress_changeset(transfer, attrs)

@spec progress_changeset(t(), map()) :: Ecto.Changeset.t()

Changeset for updating transfer progress.

request_approval_changeset(transfer, expires_in_hours \\ 24)

@spec request_approval_changeset(t(), pos_integer()) :: Ecto.Changeset.t()

Changeset for requesting approval.

start_changeset(transfer)

@spec start_changeset(t()) :: Ecto.Changeset.t()

Changeset for starting a transfer.

success_rate(transfer)

@spec success_rate(t()) :: float()

Calculates the success rate of a transfer. Returns a float between 0.0 and 1.0.

terminal?(arg1)

@spec terminal?(t() | any()) :: boolean()

Checks if a transfer is in a terminal state.