Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- defmodule AngotiaCatalogsApi.NPCS.NPC do
- use Ecto.Schema
- import Ecto.Changeset
- alias AngotiaCatalogsApi.NPCS.Statistics
- alias AngotiaCatalogsApi.NPCS.Settings
- schema "npcs" do
- field :name, :string
- field :_id, :string
- field :field_diameter, :integer
- field :type, :string
- field :choosed, :string
- field :move_type, :string
- field :has_visible_level, :boolean
- field :char_pic, :string
- embeds_one :statistics, Statistics
- embeds_one :settings, Settings
- timestamps()
- end
- @doc false
- def changeset(npc, attrs) do
- npc
- |> cast(attrs, [:name, :_id, :field_diameter, :type, :choosed, :move_type, :has_visible_level, :char_pic])
- |> validate_required([:name, :_id, :field_diameter, :type, :choosed, :has_visible_level, :char_pic])
- |> cast_embed(:statistics, with: &Statistics.statistics_changeset/2)
- |> cast_embed(:settings, with: &Settings.settings_changeset/2)
- end
- end
- ----------
- defmodule AngotiaCatalogsApi.NPCS.Settings do
- use Ecto.Schema
- import Ecto.Changeset
- embedded_schema do
- embeds_one :time_of_occurance do
- field :min, :integer
- field :max, :integer
- end
- end
- def settings_changeset(settings, attrs) do
- settings
- |> cast(attrs, [:time_of_occurance])
- |> cast_embed(:time_of_occurance, with: &time_of_occurance_changeset/2)
- end
- defp time_of_occurance_changeset(occurance, attrs) do
- occurance
- |> cast(attrs, [:min, :max])
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement