56 lines
1.5 KiB
Elixir
56 lines
1.5 KiB
Elixir
defmodule Odinsea.Database.Schema.Alliance do
|
|
@moduledoc """
|
|
Ecto schema for the alliances table.
|
|
Represents guild alliances.
|
|
"""
|
|
|
|
use Ecto.Schema
|
|
import Ecto.Changeset
|
|
|
|
@primary_key {:id, :id, autogenerate: true}
|
|
|
|
schema "alliances" do
|
|
field :name, :string
|
|
field :leaderid, :integer
|
|
field :guild1, :integer
|
|
field :guild2, :integer
|
|
field :guild3, :integer, default: 0
|
|
field :guild4, :integer, default: 0
|
|
field :guild5, :integer, default: 0
|
|
field :rank1, :string, default: "Master"
|
|
field :rank2, :string, default: "Jr.Master"
|
|
field :rank3, :string, default: "Member"
|
|
field :rank4, :string, default: "Member"
|
|
field :rank5, :string, default: "Member"
|
|
field :capacity, :integer, default: 2
|
|
field :notice, :string, default: ""
|
|
end
|
|
|
|
@doc """
|
|
Changeset for creating an alliance.
|
|
"""
|
|
def creation_changeset(alliance, attrs) do
|
|
alliance
|
|
|> cast(attrs, [:name, :leaderid, :guild1, :guild2, :capacity])
|
|
|> validate_required([:name, :leaderid, :guild1, :guild2])
|
|
|> validate_length(:name, min: 1, max: 13)
|
|
|> unique_constraint(:name)
|
|
end
|
|
|
|
@doc """
|
|
Changeset for updating alliance guilds.
|
|
"""
|
|
def guilds_changeset(alliance, attrs) do
|
|
alliance
|
|
|> cast(attrs, [:guild1, :guild2, :guild3, :guild4, :guild5])
|
|
end
|
|
|
|
@doc """
|
|
Changeset for updating alliance ranks.
|
|
"""
|
|
def ranks_changeset(alliance, attrs) do
|
|
alliance
|
|
|> cast(attrs, [:rank1, :rank2, :rank3, :rank4, :rank5])
|
|
end
|
|
end
|