PhoenixKitCRM.Schemas.ListMember (PhoenixKitCRM v0.3.3)

Copy Markdown View Source

The list ↔ contact join (PhoenixKitCRM.Lists), carrying a denormalized email snapshot taken at add-time and its own status/source.

email is deliberately not in the public changeset's castable fields — it is only ever set by the context from the contact's current email (PhoenixKitCRM.Lists.add_contact_to_list/3), so a list survives a later change to the contact's own email and a crafted form payload can't forge a membership's email. It may be nil (the contact just isn't sendable).

Summary

Functions

Changeset for creating/updating a membership. email is NOT castable — see moduledoc.

Types

t()

@type t() :: %PhoenixKitCRM.Schemas.ListMember{
  __meta__: term(),
  contact:
    PhoenixKitCRM.Schemas.Contact.t() | Ecto.Association.NotLoaded.t() | nil,
  contact_uuid: UUIDv7.t() | nil,
  email: String.t() | nil,
  inserted_at: DateTime.t() | nil,
  list:
    PhoenixKitCRM.Schemas.ContactList.t() | Ecto.Association.NotLoaded.t() | nil,
  list_uuid: UUIDv7.t() | nil,
  metadata: map(),
  source: String.t() | nil,
  status: String.t() | nil,
  subscribed_at: DateTime.t() | nil,
  unsubscribed_at: DateTime.t() | nil,
  updated_at: DateTime.t() | nil,
  uuid: UUIDv7.t() | nil
}

Functions

changeset(member, attrs)

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

Changeset for creating/updating a membership. email is NOT castable — see moduledoc.

sources()

@spec sources() :: [String.t()]

statuses()

@spec statuses() :: [String.t()]