39 lines
904 B
Elixir
39 lines
904 B
Elixir
defmodule Odinsea.Database.Schema.Pet do
|
|
@moduledoc """
|
|
Ecto schema for the pets table.
|
|
Represents pet data in the game.
|
|
"""
|
|
|
|
use Ecto.Schema
|
|
import Ecto.Changeset
|
|
|
|
@primary_key {:petid, :id, autogenerate: true}
|
|
|
|
schema "pets" do
|
|
field :name, :string
|
|
field :level, :integer, default: 1
|
|
field :closeness, :integer, default: 0
|
|
field :fullness, :integer, default: 0
|
|
field :seconds, :integer, default: 0
|
|
field :flags, :integer, default: 0
|
|
end
|
|
|
|
@doc """
|
|
Changeset for creating a pet.
|
|
"""
|
|
def creation_changeset(pet, attrs) do
|
|
pet
|
|
|> cast(attrs, [:name, :level, :closeness, :fullness])
|
|
|> validate_required([:name])
|
|
|> validate_length(:name, min: 1, max: 13)
|
|
end
|
|
|
|
@doc """
|
|
Changeset for updating pet stats.
|
|
"""
|
|
def stats_changeset(pet, attrs) do
|
|
pet
|
|
|> cast(attrs, [:level, :closeness, :fullness, :seconds, :flags])
|
|
end
|
|
end
|