64 lines
1.8 KiB
Elixir
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
|