Packages
blossom
0.7.0
0.29.3
0.29.2
0.29.1
0.29.0
0.28.0
0.27.3
0.27.2
0.27.1
0.27.0
0.26.3
0.26.2
0.26.1
0.26.0
0.25.3
0.25.2
0.25.1
0.25.0
0.24.1
0.24.0
0.23.5
0.23.4
0.23.3
0.23.2
0.23.1
0.23.0
0.22.1
0.22.0
0.21.8
0.21.7
0.21.6
0.21.5
0.21.4
0.21.3
0.21.2
0.21.1
0.21.0
0.20.4
0.20.3
0.20.2
0.20.1
0.20.0
0.19.5
0.19.4
0.19.3
0.19.2
0.19.1
0.19.0
0.18.1
0.18.0
0.17.4
0.17.3
0.17.2
0.17.1
0.17.0
0.16.0
0.15.2
0.15.1
0.15.0
0.14.0
0.13.0
0.12.2
0.12.1
0.12.0
0.11.0
0.10.1
0.10.0
0.9.2
0.9.1
0.9.0
0.8.0
0.7.0
0.6.2
0.6.1
0.6.0
0.5.1
0.5.0
0.4.0
0.3.0
0.2.0
0.1.0
Easy identity for easy authentication
Current section
Files
Jump to
Current section
Files
lib/blossom/schemas/verification_codes.ex
defmodule Blossom.Schemas.VerificationsCodes do
alias Ecto.Changeset
alias KilnCore.Builders.Schema, as: Builder
alias KilnCore.Utils
defmacro __using__(opts \\ []) do
quote do
use KilnCore.Schema,
repo: unquote(opts)[:repo],
private_fields: [:code, :inserted_at, :updated_at],
required_fields: [:code, :kind, :expiration, :user],
writable_fields: [:id, :code, :kind, :expiration, :user]
import Djinn
@users Utils.option_or_mod_replace(
@caller,
unquote(opts),
:users,
Users,
2
)
schema "verification_codes" do
field(:code, :string)
field(:kind, :string)
field(:expiration, :integer)
belongs_to(:users, @users, foreign_key: :user)
timestamps()
end
def check_constraints(changeset) do
changeset
|> Changeset.unique_constraint(:code)
|> Changeset.foreign_key_constraint(:user)
end
filter_value("kind", [v], v)
def filter_by_code(query, %{"code" => code}) do
where(query, [v], v.code == ^code)
end
def filter_by_code(query, _params), do: query
def filter_by_params(query, params) do
query
|> filter_by_id(params)
|> filter_by_code(params)
|> filter_by_kind(params)
end
def delete_selected(query) do
query
|> @repo.delete_all()
|> Builder.handle_error()
end
def delete(id) when byte_size(id) == 36 do
@caller
|> where(id: ^id)
|> @caller.delete_selected()
end
def delete(code) do
@caller
|> where(code: ^code)
|> @caller.delete_selected()
end
end
end
end