defmodule Remedy.Schema.UserFlags do
@moduledoc """
User Flags
"""
use Remedy.Schema
use BattleStandard
@flag_bits [
{:DISCORD_EMPLOYEE, 1 <<< 0},
{:PARTNERED_SERVER_OWNER, 1 <<< 1},
{:HYPESQUAD_EVENTS, 1 <<< 2},
{:BUG_HUNTER_LEVEL_1, 1 <<< 3},
{:HYPESQUAD_BRAVERY, 1 <<< 6},
{:HYPESQUAD_BRILLIANCE, 1 <<< 7},
{:HYPESQUAD_BALANCE, 1 <<< 8},
{:EARLY_SUPPORTER, 1 <<< 9},
{:TEAM_USER, 1 <<< 10},
{:SYSTEM, 1 <<< 12},
{:BUG_HUNTER_LEVEL_2, 1 <<< 14},
{:VERIFIED_BOT, 1 <<< 16},
{:VERIFIED_DEVELOPER, 1 <<< 17},
{:DISCORD_CERTIFIED_MODERATOR, 1 <<< 18}
]
@type t :: %__MODULE__{
DISCORD_EMPLOYEE: boolean(),
PARTNERED_SERVER_OWNER: boolean(),
HYPESQUAD_EVENTS: boolean(),
BUG_HUNTER_LEVEL_1: boolean(),
HYPESQUAD_BRAVERY: boolean(),
HYPESQUAD_BRILLIANCE: boolean(),
HYPESQUAD_BALANCE: boolean(),
EARLY_SUPPORTER: boolean(),
TEAM_USER: boolean(),
SYSTEM: boolean(),
BUG_HUNTER_LEVEL_2: boolean(),
VERIFIED_BOT: boolean(),
VERIFIED_DEVELOPER: boolean(),
DISCORD_CERTIFIED_MODERATOR: boolean()
}
embedded_schema do
field :DISCORD_EMPLOYEE, :boolean, default: false
field :PARTNERED_SERVER_OWNER, :boolean, default: false
field :HYPESQUAD_EVENTS, :boolean, default: false
field :BUG_HUNTER_LEVEL_1, :boolean, default: false
field :HYPESQUAD_BRAVERY, :boolean, default: false
field :HYPESQUAD_BRILLIANCE, :boolean, default: false
field :HYPESQUAD_BALANCE, :boolean, default: false
field :EARLY_SUPPORTER, :boolean, default: false
field :TEAM_USER, :boolean, default: false
field :SYSTEM, :boolean, default: false
field :BUG_HUNTER_LEVEL_2, :boolean, default: false
field :VERIFIED_BOT, :boolean, default: false
field :VERIFIED_DEVELOPER, :boolean, default: false
field :DISCORD_CERTIFIED_MODERATOR, :boolean, default: false
end
def changeset(model \\ %__MODULE__{}, params) do
fields = __MODULE__.__schema__(:fields)
embeds = __MODULE__.__schema__(:embeds)
cast_model = cast(model, params, fields -- embeds)
Enum.reduce(embeds, cast_model, fn embed, cast_model ->
cast_embed(cast_model, embed)
end)
end
end