Advertisement
Guest User

Untitled

a guest
Jun 5th, 2020
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.49 KB | None | 0 0
  1. defmodule AngotiaCatalogsApi.NPCS.NPC do
  2. use Ecto.Schema
  3. import Ecto.Changeset
  4. alias AngotiaCatalogsApi.NPCS.Statistics
  5. alias AngotiaCatalogsApi.NPCS.Settings
  6.  
  7.  
  8. schema "npcs" do
  9. field :name, :string
  10. field :_id, :string
  11. field :field_diameter, :integer
  12. field :type, :string
  13. field :choosed, :string
  14. field :move_type, :string
  15. field :has_visible_level, :boolean
  16. field :char_pic, :string
  17. embeds_one :statistics, Statistics
  18. embeds_one :settings, Settings
  19.  
  20. timestamps()
  21. end
  22.  
  23. @doc false
  24. def changeset(npc, attrs) do
  25. npc
  26. |> cast(attrs, [:name, :_id, :field_diameter, :type, :choosed, :move_type, :has_visible_level, :char_pic])
  27. |> validate_required([:name, :_id, :field_diameter, :type, :choosed, :has_visible_level, :char_pic])
  28. |> cast_embed(:statistics, with: &Statistics.statistics_changeset/2)
  29. |> cast_embed(:settings, with: &Settings.settings_changeset/2)
  30. end
  31. end
  32.  
  33.  
  34. ----------
  35.  
  36.  
  37. defmodule AngotiaCatalogsApi.NPCS.Settings do
  38. use Ecto.Schema
  39. import Ecto.Changeset
  40.  
  41. embedded_schema do
  42. embeds_one :time_of_occurance do
  43. field :min, :integer
  44. field :max, :integer
  45. end
  46. end
  47.  
  48. def settings_changeset(settings, attrs) do
  49. settings
  50. |> cast(attrs, [:time_of_occurance])
  51. |> cast_embed(:time_of_occurance, with: &time_of_occurance_changeset/2)
  52. end
  53.  
  54. defp time_of_occurance_changeset(occurance, attrs) do
  55. occurance
  56. |> cast(attrs, [:min, :max])
  57. end
  58. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement