File size: 989 Bytes
8da2481 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | defmodule Plausible.Teams.SiteTransfer do
@moduledoc """
Site transfer schema
"""
use Ecto.Schema
import Ecto.Changeset
@type t() :: %__MODULE__{}
schema "team_site_transfers" do
field :transfer_id, :string
field :email, :string
field :transfer_guests, :boolean, default: true
belongs_to :site, Plausible.Site
belongs_to :initiator, Plausible.Auth.User
belongs_to :destination_team, Plausible.Teams.Team
timestamps()
end
def changeset(site, opts) do
initiator = Keyword.fetch!(opts, :initiator)
transfer_guests = Keyword.get(opts, :transfer_guests, true)
destination_team = Keyword.get(opts, :destination_team)
email = Keyword.get(opts, :email)
%__MODULE__{transfer_id: Nanoid.generate()}
|> cast(%{email: email}, [:email])
|> put_change(:transfer_guests, transfer_guests)
|> put_assoc(:site, site)
|> put_assoc(:destination_team, destination_team)
|> put_assoc(:initiator, initiator)
end
end
|