PhoenixKitCRM.Lists.ImportReport (PhoenixKitCRM v0.3.3)

Copy Markdown View Source

Result of an import run (PhoenixKitCRM.Lists.Import).

rows carries one entry per input row, in file order, for the eventual admin UI's expandable row detail (Stage C4b) — line is 1-based and counts the header row for CSV input, so it lines up with what a user sees if they open the file in a spreadsheet editor.

Summary

Types

row()

@type row() :: %{
  line: pos_integer(),
  email: String.t() | nil,
  outcome: :imported | :skipped,
  reason: skip_reason() | nil
}

skip_reason()

@type skip_reason() ::
  :already_in_list
  | :unsubscribed
  | :no_email
  | :invalid_email
  | :duplicate_in_file

t()

@type t() :: %PhoenixKitCRM.Lists.ImportReport{
  added: non_neg_integer(),
  created: non_neg_integer(),
  rows: [row()],
  skipped: %{required(skip_reason()) => non_neg_integer()}
}