defmodule Mobilizon.Applications.ApplicationToken do @moduledoc """ Module representing an application token """ use Ecto.Schema import Ecto.Changeset alias Mobilizon.Applications.{Application, ApplicationTokenStatus} alias Mobilizon.Users.User schema "application_tokens" do belongs_to(:user, User) belongs_to(:application, Application) field(:authorization_code, :string) field(:status, ApplicationTokenStatus, default: :pending) field(:scope, :string) timestamps() end @required_attrs [:user_id, :application_id, :scope] @optional_attrs [:authorization_code, :status] @attrs @required_attrs ++ @optional_attrs @doc false def changeset(application_token, attrs) do application_token |> cast(attrs, @attrs) |> validate_required(@required_attrs) end end