Files
2026-02-14 23:58:01 -07:00

64 lines
1.8 KiB
Elixir

defmodule Odinsea.Database.Schema.Guild do
@moduledoc """
Ecto schema for the guilds table.
Represents guild data in the game.
"""
use Ecto.Schema
import Ecto.Changeset
@primary_key {:guildid, :id, autogenerate: true}
schema "guilds" do
field :leader, :integer, default: 0
field :gp, :integer, default: 0, source: :GP
field :logo, :integer
field :logo_color, :integer, default: 0, source: :logoColor
field :name, :string
field :rank1title, :string, default: "Master"
field :rank2title, :string, default: "Jr. Master"
field :rank3title, :string, default: "Member"
field :rank4title, :string, default: "Member"
field :rank5title, :string, default: "Member"
field :capacity, :integer, default: 10
field :logo_bg, :integer, source: :logoBG
field :logo_bg_color, :integer, default: 0, source: :logoBGColor
field :notice, :string
field :signature, :integer, default: 0
field :alliance, :integer, default: 0
has_many :guild_skills, Odinsea.Database.Schema.GuildSkill, foreign_key: :guildid
end
@doc """
Changeset for creating a guild.
"""
def creation_changeset(guild, attrs) do
guild
|> cast(attrs, [:leader, :name, :capacity, :logo, :logo_color, :logo_bg, :logo_bg_color])
|> validate_required([:leader, :name])
|> validate_length(:name, min: 1, max: 45)
|> unique_constraint(:name)
end
@doc """
Changeset for updating guild settings.
"""
def settings_changeset(guild, attrs) do
guild
|> cast(attrs, [
:rank1title, :rank2title, :rank3title, :rank4title, :rank5title,
:capacity, :notice, :signature, :alliance
])
end
@doc """
Changeset for updating guild leader.
"""
def leader_changeset(guild, attrs) do
guild
|> cast(attrs, [:leader])
|> validate_required([:leader])
end
end