-
-
Save shahryarjb/92a3fd59a0983c0e4f648e02108dcac7 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
defmodule TrangellCmsService.Cms.Db.LearnCategory do | |
use Ecto.Schema | |
import Ecto.Changeset | |
@primary_key {:id, :binary_id, autogenerate: true} | |
@foreign_key_type :binary_id | |
schema "cms_learn_category" do | |
field :title, :string | |
field :status, :boolean | |
field :language, :string | |
field :group_acl, :string | |
field :seo_alias_link, :string | |
field :seo_words, :string | |
field :seo_description, :string | |
field :seo_language, :string | |
field :seo_language_link, :string | |
field :pic_x1_link, :string | |
field :pic_x2_link, :string | |
field :pic_x3_link, :string | |
has_many :cms_learn_headlines, TrangellCmsService.Cms.Db.LearnHeadlines, foreign_key: :cms_learn_category_id | |
has_many :cms_learn_post, TrangellCmsService.Cms.Db.LearnPost, foreign_key: :cms_learn_category_id | |
timestamps() | |
end | |
@all_fields ~w(title status language group_acl seo_alias_link seo_words seo_description seo_language seo_language_link pic_x1_link pic_x2_link pic_x3_link)a | |
def changeset(struct, params \\ %{}) do | |
struct | |
|> cast(params, @all_fields) | |
|> validate_required(@all_fields) | |
|> validate_inclusion(:group_acl, ["admin", "actived", "unactived", "blocked"]) | |
|> validate_inclusion(:language, ["en", "fa"]) | |
|> validate_inclusion(:seo_language, ["en", "fa"]) | |
|> unique_constraint(:seo_alias_link, name: :index_of_learn_categories_alias_unique_link, message: "alias link already exists.") | |
end | |
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
defmodule TrangellCmsService.Cms.Db.LearnHeadlines do | |
use Ecto.Schema | |
import Ecto.Changeset | |
@primary_key {:id, :binary_id, autogenerate: true} | |
@foreign_key_type :binary_id | |
schema "cms_learn_headlines" do | |
field :title, :string | |
field :status, :boolean | |
field :language, :string | |
field :group_acl, :string | |
field :description, :string | |
field :seo_alias_link, :string | |
field :seo_words, :string | |
field :seo_description, :string | |
field :seo_language, :string | |
field :seo_language_link, :string | |
belongs_to :cms_learn_category, TrangellCmsService.Cms.Db.LearnCategory, foreign_key: :cms_learn_category_id, type: :binary_id | |
has_many :cms_learn_post, TrangellCmsService.Cms.Db.LearnPost, foreign_key: :cms_learn_headlines_id | |
timestamps() | |
end | |
@all_fields ~w(title status language group_acl description seo_alias_link seo_words seo_description seo_language seo_language_link cms_learn_category_id)a | |
def changeset(struct, params \\ %{}) do | |
struct | |
|> cast(params, @all_fields) | |
|> validate_required(@all_fields) | |
|> validate_inclusion(:language, ["en", "fa"]) | |
|> validate_inclusion(:seo_language, ["en", "fa"]) | |
|> validate_inclusion(:group_acl, ["admin", "actived", "unactived", "blocked"]) | |
|> unique_constraint(:seo_alias_link, name: :index_of_learn_headlines_alias_unique_link, message: "alias link already exists.") | |
|> foreign_key_constraint(:cms_learn_category_id) | |
|> validate_field_relational(:cms_learn_category_id) | |
end | |
defp validate_field_relational(changeset, field) do | |
field_concerned = get_field(changeset, field) | |
case Ecto.UUID.cast(field_concerned) do | |
:error -> | |
add_error(changeset, field, "relational field is invalid") | |
_ -> | |
changeset | |
end | |
end | |
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
defmodule TrangellCmsService.Cms.Db.LearnPost do | |
use Ecto.Schema | |
import Ecto.Changeset | |
@primary_key {:id, :binary_id, autogenerate: true} | |
@foreign_key_type :binary_id | |
schema "cms_learn_post" do | |
field :title, :string | |
field :status, :boolean | |
field :group_acl, :string | |
field :short_description, :string | |
field :description, :string | |
field :seo_alias_link, :string | |
field :seo_words, :string | |
field :seo_description, :string | |
field :seo_language, :string | |
field :seo_language_link, :string | |
belongs_to :cms_learn_category, TrangellCmsService.Cms.Db.LearnCategory, foreign_key: :cms_learn_category_id, type: :binary_id | |
belongs_to :cms_learn_headlines, TrangellCmsService.Cms.Db.LearnHeadlines, foreign_key: :cms_learn_headlines_id, type: :binary_id | |
timestamps() | |
end | |
@all_fields ~w(title status group_acl short_description description seo_alias_link seo_words seo_description seo_language seo_language_link cms_learn_category_id cms_learn_headlines_id)a | |
def changeset(struct, params \\ %{}) do | |
struct | |
|> cast(params, @all_fields) | |
|> validate_required(@all_fields) | |
|> validate_inclusion(:seo_language, ["en", "fa"]) | |
|> validate_inclusion(:group_acl, ["admin", "actived", "unactived", "blocked"]) | |
|> unique_constraint(:seo_alias_link, name: :index_of_learn_posts_alias_unique_link, message: "alias link already exists.") | |
|> foreign_key_constraint(:cms_learn_category_id) | |
|> foreign_key_constraint(:cms_learn_headlines_id) | |
|> validate_field_relational(:cms_learn_category_id) | |
|> validate_field_relational(:cms_learn_headlines_id) | |
# |> check_constraint(:cms_learn_category_id) | |
# |> check_constraint(:cms_learn_headlines_id) | |
end | |
defp validate_field_relational(changeset, field) do | |
field_concerned = get_field(changeset, field) | |
case Ecto.UUID.cast(field_concerned) do | |
:error -> | |
add_error(changeset, field, "relational field is invalid") | |
_ -> | |
changeset | |
end | |
end | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment