Files
odinsea-elixir/lib/odinsea/database/schema/alliance.ex
2026-02-14 23:58:01 -07:00

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