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