diff --git a/apps/mishka_content/lib/blog/author.ex b/apps/mishka_content/lib/blog/author.ex index b9526346..9a053bf5 100644 --- a/apps/mishka_content/lib/blog/author.ex +++ b/apps/mishka_content/lib/blog/author.ex @@ -3,7 +3,7 @@ defmodule MishkaContent.Blog.Author do alias MishkaDatabase.Schema.MishkaContent.BlogAuthor import Ecto.Query - use MishkaDatabase.CRUD, + use MishkaDeveloperTools.DB.CRUD, module: BlogAuthor, error_atom: :blog_author, repo: MishkaDatabase.Repo @@ -15,34 +15,34 @@ defmodule MishkaContent.Blog.Author do @type repo_data() :: Ecto.Schema.t() @type repo_error() :: Ecto.Changeset.t() - @behaviour MishkaDatabase.CRUD + @behaviour MishkaDeveloperTools.DB.CRUD - @doc delegate_to: {MishkaDatabase.CRUD, :crud_add, 1} + @doc delegate_to: {MishkaDeveloperTools.DB.CRUD, :crud_add, 1} def create(attrs) do crud_add(attrs) end - @doc delegate_to: {MishkaDatabase.CRUD, :crud_add, 1} + @doc delegate_to: {MishkaDeveloperTools.DB.CRUD, :crud_add, 1} def create(attrs, allowed_fields) do crud_add(attrs, allowed_fields) end - @doc delegate_to: {MishkaDatabase.CRUD, :crud_edit, 1} + @doc delegate_to: {MishkaDeveloperTools.DB.CRUD, :crud_edit, 1} def edit(attrs) do crud_edit(attrs) end - @doc delegate_to: {MishkaDatabase.CRUD, :crud_edit, 1} + @doc delegate_to: {MishkaDeveloperTools.DB.CRUD, :crud_edit, 1} def edit(attrs, allowed_fields) do crud_edit(attrs, allowed_fields) end - @doc delegate_to: {MishkaDatabase.CRUD, :crud_delete, 1} + @doc delegate_to: {MishkaDeveloperTools.DB.CRUD, :crud_delete, 1} def delete(id) do crud_delete(id) end - @doc delegate_to: {MishkaDatabase.CRUD, :crud_get_record, 1} + @doc delegate_to: {MishkaDeveloperTools.DB.CRUD, :crud_get_record, 1} def show_by_id(id) do crud_get_record(id) end diff --git a/apps/mishka_content/lib/blog/category.ex b/apps/mishka_content/lib/blog/category.ex index a6166aaa..457db2e9 100644 --- a/apps/mishka_content/lib/blog/category.ex +++ b/apps/mishka_content/lib/blog/category.ex @@ -3,7 +3,7 @@ defmodule MishkaContent.Blog.Category do alias MishkaDatabase.Schema.MishkaContent.Blog.Category import Ecto.Query - use MishkaDatabase.CRUD, + use MishkaDeveloperTools.DB.CRUD, module: Category, error_atom: :category, repo: MishkaDatabase.Repo @@ -14,43 +14,43 @@ defmodule MishkaContent.Blog.Category do @type repo_data() :: Ecto.Schema.t() @type repo_error() :: Ecto.Changeset.t() - @behaviour MishkaDatabase.CRUD + @behaviour MishkaDeveloperTools.DB.CRUD def subscribe do Phoenix.PubSub.subscribe(MishkaHtml.PubSub, "blog_category") end - @doc delegate_to: {MishkaDatabase.CRUD, :crud_add, 1} + @doc delegate_to: {MishkaDeveloperTools.DB.CRUD, :crud_add, 1} def create(attrs) do crud_add(attrs) |> notify_subscribers(:category) end - @doc delegate_to: {MishkaDatabase.CRUD, :crud_add, 1} + @doc delegate_to: {MishkaDeveloperTools.DB.CRUD, :crud_add, 1} def create(attrs, allowed_fields) do crud_add(attrs, allowed_fields) |> notify_subscribers(:category) end - @doc delegate_to: {MishkaDatabase.CRUD, :crud_edit, 1} + @doc delegate_to: {MishkaDeveloperTools.DB.CRUD, :crud_edit, 1} def edit(attrs) do crud_edit(attrs) |> notify_subscribers(:category) end - @doc delegate_to: {MishkaDatabase.CRUD, :crud_edit, 1} + @doc delegate_to: {MishkaDeveloperTools.DB.CRUD, :crud_edit, 1} def edit(attrs, allowed_fields) do crud_edit(attrs, allowed_fields) |> notify_subscribers(:category) end - @doc delegate_to: {MishkaDatabase.CRUD, :crud_delete, 1} + @doc delegate_to: {MishkaDeveloperTools.DB.CRUD, :crud_delete, 1} def delete(id) do crud_delete(id) |> notify_subscribers(:category) end - @doc delegate_to: {MishkaDatabase.CRUD, :crud_get_record, 1} + @doc delegate_to: {MishkaDeveloperTools.DB.CRUD, :crud_get_record, 1} def show_by_id(id) do crud_get_record(id) end diff --git a/apps/mishka_content/lib/blog/like.ex b/apps/mishka_content/lib/blog/like.ex index 5e63493f..590a8971 100644 --- a/apps/mishka_content/lib/blog/like.ex +++ b/apps/mishka_content/lib/blog/like.ex @@ -3,7 +3,7 @@ defmodule MishkaContent.Blog.Like do import Ecto.Query - use MishkaDatabase.CRUD, + use MishkaDeveloperTools.DB.CRUD, module: BlogLike, error_atom: :post_like, repo: MishkaDatabase.Repo @@ -15,43 +15,43 @@ defmodule MishkaContent.Blog.Like do @type repo_data() :: Ecto.Schema.t() @type repo_error() :: Ecto.Changeset.t() - @behaviour MishkaDatabase.CRUD + @behaviour MishkaDeveloperTools.DB.CRUD def subscribe do Phoenix.PubSub.subscribe(MishkaHtml.PubSub, "blog_like") end - @doc delegate_to: {MishkaDatabase.CRUD, :crud_add, 1} + @doc delegate_to: {MishkaDeveloperTools.DB.CRUD, :crud_add, 1} def create(attrs) do crud_add(attrs) |> notify_subscribers(:like) end - @doc delegate_to: {MishkaDatabase.CRUD, :crud_add, 1} + @doc delegate_to: {MishkaDeveloperTools.DB.CRUD, :crud_add, 1} def create(attrs, allowed_fields) do crud_add(attrs, allowed_fields) |> notify_subscribers(:like) end - @doc delegate_to: {MishkaDatabase.CRUD, :crud_edit, 1} + @doc delegate_to: {MishkaDeveloperTools.DB.CRUD, :crud_edit, 1} def edit(attrs) do crud_edit(attrs) |> notify_subscribers(:like) end - @doc delegate_to: {MishkaDatabase.CRUD, :crud_edit, 1} + @doc delegate_to: {MishkaDeveloperTools.DB.CRUD, :crud_edit, 1} def edit(attrs, allowed_fields) do crud_edit(attrs, allowed_fields) |> notify_subscribers(:like) end - @doc delegate_to: {MishkaDatabase.CRUD, :crud_delete, 1} + @doc delegate_to: {MishkaDeveloperTools.DB.CRUD, :crud_delete, 1} def delete(id) do crud_delete(id) |> notify_subscribers(:like) end - @doc delegate_to: {MishkaDatabase.CRUD, :crud_get_record, 1} + @doc delegate_to: {MishkaDeveloperTools.DB.CRUD, :crud_get_record, 1} def show_by_id(id) do crud_get_record(id) end diff --git a/apps/mishka_content/lib/blog/link.ex b/apps/mishka_content/lib/blog/link.ex index d28a7502..f02b3171 100644 --- a/apps/mishka_content/lib/blog/link.ex +++ b/apps/mishka_content/lib/blog/link.ex @@ -3,7 +3,7 @@ defmodule MishkaContent.Blog.BlogLink do import Ecto.Query - use MishkaDatabase.CRUD, + use MishkaDeveloperTools.DB.CRUD, module: BlogLink, error_atom: :blog_link, repo: MishkaDatabase.Repo @@ -14,43 +14,43 @@ defmodule MishkaContent.Blog.BlogLink do @type repo_data() :: Ecto.Schema.t() @type repo_error() :: Ecto.Changeset.t() - @behaviour MishkaDatabase.CRUD + @behaviour MishkaDeveloperTools.DB.CRUD def subscribe do Phoenix.PubSub.subscribe(MishkaHtml.PubSub, "blog_link") end - @doc delegate_to: {MishkaDatabase.CRUD, :crud_add, 1} + @doc delegate_to: {MishkaDeveloperTools.DB.CRUD, :crud_add, 1} def create(attrs) do crud_add(attrs) |> notify_subscribers(:blog_link) end - @doc delegate_to: {MishkaDatabase.CRUD, :crud_add, 1} + @doc delegate_to: {MishkaDeveloperTools.DB.CRUD, :crud_add, 1} def create(attrs, allowed_fields) do crud_add(attrs, allowed_fields) |> notify_subscribers(:blog_link) end - @doc delegate_to: {MishkaDatabase.CRUD, :crud_edit, 1} + @doc delegate_to: {MishkaDeveloperTools.DB.CRUD, :crud_edit, 1} def edit(attrs) do crud_edit(attrs) |> notify_subscribers(:blog_link) end - @doc delegate_to: {MishkaDatabase.CRUD, :crud_edit, 1} + @doc delegate_to: {MishkaDeveloperTools.DB.CRUD, :crud_edit, 1} def edit(attrs, allowed_fields) do crud_edit(attrs, allowed_fields) |> notify_subscribers(:blog_link) end - @doc delegate_to: {MishkaDatabase.CRUD, :crud_delete, 1} + @doc delegate_to: {MishkaDeveloperTools.DB.CRUD, :crud_delete, 1} def delete(id) do crud_delete(id) |> notify_subscribers(:blog_link) end - @doc delegate_to: {MishkaDatabase.CRUD, :crud_get_record, 1} + @doc delegate_to: {MishkaDeveloperTools.DB.CRUD, :crud_get_record, 1} def show_by_id(id) do crud_get_record(id) end diff --git a/apps/mishka_content/lib/blog/post.ex b/apps/mishka_content/lib/blog/post.ex index 4228ab36..403dc803 100644 --- a/apps/mishka_content/lib/blog/post.ex +++ b/apps/mishka_content/lib/blog/post.ex @@ -4,7 +4,7 @@ defmodule MishkaContent.Blog.Post do alias MishkaContent.Blog.Like, as: UserLiked import Ecto.Query - use MishkaDatabase.CRUD, + use MishkaDeveloperTools.DB.CRUD, module: Post, error_atom: :post, repo: MishkaDatabase.Repo @@ -16,43 +16,43 @@ defmodule MishkaContent.Blog.Post do @type repo_data() :: Ecto.Schema.t() @type repo_error() :: Ecto.Changeset.t() - @behaviour MishkaDatabase.CRUD + @behaviour MishkaDeveloperTools.DB.CRUD def subscribe do Phoenix.PubSub.subscribe(MishkaHtml.PubSub, "blog_post") end - @doc delegate_to: {MishkaDatabase.CRUD, :crud_add, 1} + @doc delegate_to: {MishkaDeveloperTools.DB.CRUD, :crud_add, 1} def create(attrs) do crud_add(attrs) |> notify_subscribers(:post) end - @doc delegate_to: {MishkaDatabase.CRUD, :crud_add, 1} + @doc delegate_to: {MishkaDeveloperTools.DB.CRUD, :crud_add, 1} def create(attrs, allowed_fields) do crud_add(attrs, allowed_fields) |> notify_subscribers(:post) end - @doc delegate_to: {MishkaDatabase.CRUD, :crud_edit, 1} + @doc delegate_to: {MishkaDeveloperTools.DB.CRUD, :crud_edit, 1} def edit(attrs) do crud_edit(attrs) |> notify_subscribers(:post) end - @doc delegate_to: {MishkaDatabase.CRUD, :crud_edit, 1} + @doc delegate_to: {MishkaDeveloperTools.DB.CRUD, :crud_edit, 1} def edit(attrs, allowed_fields) do crud_edit(attrs, allowed_fields) |> notify_subscribers(:post) end - @doc delegate_to: {MishkaDatabase.CRUD, :crud_delete, 1} + @doc delegate_to: {MishkaDeveloperTools.DB.CRUD, :crud_delete, 1} def delete(id) do crud_delete(id) |> notify_subscribers(:post) end - @doc delegate_to: {MishkaDatabase.CRUD, :crud_get_record, 1} + @doc delegate_to: {MishkaDeveloperTools.DB.CRUD, :crud_get_record, 1} def show_by_id(id) do crud_get_record(id) end diff --git a/apps/mishka_content/lib/blog/tag.ex b/apps/mishka_content/lib/blog/tag.ex index 419dab9d..e9c0da67 100644 --- a/apps/mishka_content/lib/blog/tag.ex +++ b/apps/mishka_content/lib/blog/tag.ex @@ -3,7 +3,7 @@ defmodule MishkaContent.Blog.Tag do alias MishkaDatabase.Schema.MishkaContent.Blog.Post import Ecto.Query - use MishkaDatabase.CRUD, + use MishkaDeveloperTools.DB.CRUD, module: BlogTag, error_atom: :blog_tag, repo: MishkaDatabase.Repo @@ -14,43 +14,43 @@ defmodule MishkaContent.Blog.Tag do @type repo_data() :: Ecto.Schema.t() @type repo_error() :: Ecto.Changeset.t() - @behaviour MishkaDatabase.CRUD + @behaviour MishkaDeveloperTools.DB.CRUD def subscribe do Phoenix.PubSub.subscribe(MishkaHtml.PubSub, "blog_tag") end - @doc delegate_to: {MishkaDatabase.CRUD, :crud_add, 1} + @doc delegate_to: {MishkaDeveloperTools.DB.CRUD, :crud_add, 1} def create(attrs) do crud_add(attrs) |> notify_subscribers(:tag) end - @doc delegate_to: {MishkaDatabase.CRUD, :crud_add, 1} + @doc delegate_to: {MishkaDeveloperTools.DB.CRUD, :crud_add, 1} def create(attrs, allowed_fields) do crud_add(attrs, allowed_fields) |> notify_subscribers(:tag) end - @doc delegate_to: {MishkaDatabase.CRUD, :crud_edit, 1} + @doc delegate_to: {MishkaDeveloperTools.DB.CRUD, :crud_edit, 1} def edit(attrs) do crud_edit(attrs) |> notify_subscribers(:tag) end - @doc delegate_to: {MishkaDatabase.CRUD, :crud_edit, 1} + @doc delegate_to: {MishkaDeveloperTools.DB.CRUD, :crud_edit, 1} def edit(attrs, allowed_fields) do crud_edit(attrs, allowed_fields) |> notify_subscribers(:tag) end - @doc delegate_to: {MishkaDatabase.CRUD, :crud_delete, 1} + @doc delegate_to: {MishkaDeveloperTools.DB.CRUD, :crud_delete, 1} def delete(id) do crud_delete(id) |> notify_subscribers(:tag) end - @doc delegate_to: {MishkaDatabase.CRUD, :crud_get_record, 1} + @doc delegate_to: {MishkaDeveloperTools.DB.CRUD, :crud_get_record, 1} def show_by_id(id) do crud_get_record(id) end @@ -59,6 +59,7 @@ defmodule MishkaContent.Blog.Tag do def tags(conditions: {page, page_size}, filters: filters) do query = from(tag in BlogTag) |> convert_filters_to_where_tag(filters) from([tag] in query, + order_by: [desc: tag.inserted_at, desc: tag.id], select: %{ id: tag.id, title: tag.title, diff --git a/apps/mishka_content/lib/blog/tag_mapper.ex b/apps/mishka_content/lib/blog/tag_mapper.ex index d9daf8d4..541908db 100644 --- a/apps/mishka_content/lib/blog/tag_mapper.ex +++ b/apps/mishka_content/lib/blog/tag_mapper.ex @@ -2,7 +2,7 @@ defmodule MishkaContent.Blog.TagMapper do alias MishkaDatabase.Schema.MishkaContent.BlogTagMapper import Ecto.Query - use MishkaDatabase.CRUD, + use MishkaDeveloperTools.DB.CRUD, module: BlogTagMapper, error_atom: :blog_tag_mapper, repo: MishkaDatabase.Repo @@ -13,44 +13,44 @@ defmodule MishkaContent.Blog.TagMapper do @type repo_data() :: Ecto.Schema.t() @type repo_error() :: Ecto.Changeset.t() - @behaviour MishkaDatabase.CRUD + @behaviour MishkaDeveloperTools.DB.CRUD def subscribe do Phoenix.PubSub.subscribe(MishkaHtml.PubSub, "blog_tag_mapper") end - @doc delegate_to: {MishkaDatabase.CRUD, :crud_add, 1} + @doc delegate_to: {MishkaDeveloperTools.DB.CRUD, :crud_add, 1} def create(attrs) do crud_add(attrs) |> notify_subscribers(:blog_tag_mapper) end - @doc delegate_to: {MishkaDatabase.CRUD, :crud_add, 1} + @doc delegate_to: {MishkaDeveloperTools.DB.CRUD, :crud_add, 1} def create(attrs, allowed_fields) do crud_add(attrs, allowed_fields) |> notify_subscribers(:blog_tag_mapper) end - @doc delegate_to: {MishkaDatabase.CRUD, :crud_edit, 1} + @doc delegate_to: {MishkaDeveloperTools.DB.CRUD, :crud_edit, 1} def edit(attrs) do crud_edit(attrs) |> notify_subscribers(:blog_tag_mapper) end - @doc delegate_to: {MishkaDatabase.CRUD, :crud_edit, 1} + @doc delegate_to: {MishkaDeveloperTools.DB.CRUD, :crud_edit, 1} def edit(attrs, allowed_fields) do crud_edit(attrs, allowed_fields) |> notify_subscribers(:blog_tag_mapper) end - @doc delegate_to: {MishkaDatabase.CRUD, :crud_delete, 1} + @doc delegate_to: {MishkaDeveloperTools.DB.CRUD, :crud_delete, 1} def delete(id) do crud_delete(id) |> notify_subscribers(:blog_tag_mapper) end - @doc delegate_to: {MishkaDatabase.CRUD, :crud_get_record, 1} + @doc delegate_to: {MishkaDeveloperTools.DB.CRUD, :crud_get_record, 1} def show_by_id(id) do crud_get_record(id) end diff --git a/apps/mishka_content/lib/email/email_helper.ex b/apps/mishka_content/lib/email/email_helper.ex index 253b709a..8ee4f709 100644 --- a/apps/mishka_content/lib/email/email_helper.ex +++ b/apps/mishka_content/lib/email/email_helper.ex @@ -4,12 +4,14 @@ defmodule MishkaContent.Email.EmailHelper do @spec send(atom(), tuple()) :: Task.t() def send(type, params) do - Task.Supervisor.async_nolink(MishkaContent.Email.EmailHelperTaskSupervisor, fn -> - type - |> create_email_info(params) - |> Email.account_email() - |> Mailer.deliver_later!() - end) + if Mix.env() != :test do + Task.Supervisor.async_nolink(MishkaContent.Email.EmailHelperTaskSupervisor, fn -> + type + |> create_email_info(params) + |> Email.account_email() + |> Mailer.deliver_later!() + end) + end end defp create_email_info(:verify_email, {user_email, code_or_link}) do diff --git a/apps/mishka_content/lib/general/activity.ex b/apps/mishka_content/lib/general/activity.ex index 7d7cb646..6687b08e 100644 --- a/apps/mishka_content/lib/general/activity.ex +++ b/apps/mishka_content/lib/general/activity.ex @@ -3,7 +3,7 @@ defmodule MishkaContent.General.Activity do alias MishkaDatabase.Schema.MishkaContent.Activity import Ecto.Query - use MishkaDatabase.CRUD, + use MishkaDeveloperTools.DB.CRUD, module: Activity, error_atom: :activity, repo: MishkaDatabase.Repo @@ -14,43 +14,43 @@ defmodule MishkaContent.General.Activity do @type repo_data() :: Ecto.Schema.t() @type repo_error() :: Ecto.Changeset.t() - @behaviour MishkaDatabase.CRUD + @behaviour MishkaDeveloperTools.DB.CRUD def subscribe do Phoenix.PubSub.subscribe(MishkaHtml.PubSub, "activity") end - @doc delegate_to: {MishkaDatabase.CRUD, :crud_add, 1} + @doc delegate_to: {MishkaDeveloperTools.DB.CRUD, :crud_add, 1} def create(attrs) do crud_add(attrs) |> notify_subscribers(:activity) end - @doc delegate_to: {MishkaDatabase.CRUD, :crud_add, 1} + @doc delegate_to: {MishkaDeveloperTools.DB.CRUD, :crud_add, 1} def create(attrs, allowed_fields) do crud_add(attrs, allowed_fields) |> notify_subscribers(:activity) end - @doc delegate_to: {MishkaDatabase.CRUD, :crud_edit, 1} + @doc delegate_to: {MishkaDeveloperTools.DB.CRUD, :crud_edit, 1} def edit(attrs) do crud_edit(attrs) |> notify_subscribers(:activity) end - @doc delegate_to: {MishkaDatabase.CRUD, :crud_edit, 1} + @doc delegate_to: {MishkaDeveloperTools.DB.CRUD, :crud_edit, 1} def edit(attrs, allowed_fields) do crud_edit(attrs, allowed_fields) |> notify_subscribers(:activity) end - @doc delegate_to: {MishkaDatabase.CRUD, :crud_delete, 1} + @doc delegate_to: {MishkaDeveloperTools.DB.CRUD, :crud_delete, 1} def delete(id) do crud_delete(id) |> notify_subscribers(:activity) end - @doc delegate_to: {MishkaDatabase.CRUD, :crud_get_record, 1} + @doc delegate_to: {MishkaDeveloperTools.DB.CRUD, :crud_get_record, 1} def show_by_id(id) do crud_get_record(id) end diff --git a/apps/mishka_content/lib/general/bookmark.ex b/apps/mishka_content/lib/general/bookmark.ex index fea6a977..844370ee 100644 --- a/apps/mishka_content/lib/general/bookmark.ex +++ b/apps/mishka_content/lib/general/bookmark.ex @@ -2,7 +2,7 @@ defmodule MishkaContent.General.Bookmark do alias MishkaDatabase.Schema.MishkaContent.Bookmark import Ecto.Query - use MishkaDatabase.CRUD, + use MishkaDeveloperTools.DB.CRUD, module: Bookmark, error_atom: :bookmark, repo: MishkaDatabase.Repo @@ -13,34 +13,34 @@ defmodule MishkaContent.General.Bookmark do @type repo_data() :: Ecto.Schema.t() @type repo_error() :: Ecto.Changeset.t() - @behaviour MishkaDatabase.CRUD + @behaviour MishkaDeveloperTools.DB.CRUD - @doc delegate_to: {MishkaDatabase.CRUD, :crud_add, 1} + @doc delegate_to: {MishkaDeveloperTools.DB.CRUD, :crud_add, 1} def create(attrs) do crud_add(attrs) end - @doc delegate_to: {MishkaDatabase.CRUD, :crud_add, 1} + @doc delegate_to: {MishkaDeveloperTools.DB.CRUD, :crud_add, 1} def create(attrs, allowed_fields) do crud_add(attrs, allowed_fields) end - @doc delegate_to: {MishkaDatabase.CRUD, :crud_edit, 1} + @doc delegate_to: {MishkaDeveloperTools.DB.CRUD, :crud_edit, 1} def edit(attrs) do crud_edit(attrs) end - @doc delegate_to: {MishkaDatabase.CRUD, :crud_edit, 1} + @doc delegate_to: {MishkaDeveloperTools.DB.CRUD, :crud_edit, 1} def edit(attrs, allowed_fields) do crud_edit(attrs, allowed_fields) end - @doc delegate_to: {MishkaDatabase.CRUD, :crud_delete, 1} + @doc delegate_to: {MishkaDeveloperTools.DB.CRUD, :crud_delete, 1} def delete(id) do crud_delete(id) end - @doc delegate_to: {MishkaDatabase.CRUD, :crud_get_record, 1} + @doc delegate_to: {MishkaDeveloperTools.DB.CRUD, :crud_get_record, 1} def show_by_id(id) do crud_get_record(id) end diff --git a/apps/mishka_content/lib/general/comment.ex b/apps/mishka_content/lib/general/comment.ex index 2688a512..2546bcd0 100644 --- a/apps/mishka_content/lib/general/comment.ex +++ b/apps/mishka_content/lib/general/comment.ex @@ -4,7 +4,7 @@ defmodule MishkaContent.General.Comment do alias MishkaContent.General.Notif import Ecto.Query - use MishkaDatabase.CRUD, + use MishkaDeveloperTools.DB.CRUD, module: Comment, error_atom: :comment, repo: MishkaDatabase.Repo @@ -16,43 +16,43 @@ defmodule MishkaContent.General.Comment do @type repo_data() :: Ecto.Schema.t() @type repo_error() :: Ecto.Changeset.t() - @behaviour MishkaDatabase.CRUD + @behaviour MishkaDeveloperTools.DB.CRUD def subscribe do Phoenix.PubSub.subscribe(MishkaHtml.PubSub, "comment") end - @doc delegate_to: {MishkaDatabase.CRUD, :crud_add, 1} + @doc delegate_to: {MishkaDeveloperTools.DB.CRUD, :crud_add, 1} def create(attrs) do crud_add(attrs) |> notify_subscribers(:comment) end - @doc delegate_to: {MishkaDatabase.CRUD, :crud_add, 1} + @doc delegate_to: {MishkaDeveloperTools.DB.CRUD, :crud_add, 1} def create(attrs, allowed_fields) do crud_add(attrs, allowed_fields) |> notify_subscribers(:comment) end - @doc delegate_to: {MishkaDatabase.CRUD, :crud_edit, 1} + @doc delegate_to: {MishkaDeveloperTools.DB.CRUD, :crud_edit, 1} def edit(attrs) do crud_edit(attrs) |> notify_subscribers(:comment) end - @doc delegate_to: {MishkaDatabase.CRUD, :crud_edit, 1} + @doc delegate_to: {MishkaDeveloperTools.DB.CRUD, :crud_edit, 1} def edit(attrs, allowed_fields) do crud_edit(attrs, allowed_fields) |> notify_subscribers(:comment) end - @doc delegate_to: {MishkaDatabase.CRUD, :crud_delete, 1} + @doc delegate_to: {MishkaDeveloperTools.DB.CRUD, :crud_delete, 1} def delete(id) do crud_delete(id) |> notify_subscribers(:comment) end - @doc delegate_to: {MishkaDatabase.CRUD, :crud_get_record, 1} + @doc delegate_to: {MishkaDeveloperTools.DB.CRUD, :crud_get_record, 1} def show_by_id(id) do crud_get_record(id) end diff --git a/apps/mishka_content/lib/general/comment_like.ex b/apps/mishka_content/lib/general/comment_like.ex index d2922735..33b48c86 100644 --- a/apps/mishka_content/lib/general/comment_like.ex +++ b/apps/mishka_content/lib/general/comment_like.ex @@ -4,7 +4,7 @@ defmodule MishkaContent.General.CommentLike do import Ecto.Query - use MishkaDatabase.CRUD, + use MishkaDeveloperTools.DB.CRUD, module: CommentLike, error_atom: :comment_like, repo: MishkaDatabase.Repo @@ -15,34 +15,34 @@ defmodule MishkaContent.General.CommentLike do @type repo_data() :: Ecto.Schema.t() @type repo_error() :: Ecto.Changeset.t() - @behaviour MishkaDatabase.CRUD + @behaviour MishkaDeveloperTools.DB.CRUD - @doc delegate_to: {MishkaDatabase.CRUD, :crud_add, 1} + @doc delegate_to: {MishkaDeveloperTools.DB.CRUD, :crud_add, 1} def create(attrs) do crud_add(attrs) end - @doc delegate_to: {MishkaDatabase.CRUD, :crud_add, 1} + @doc delegate_to: {MishkaDeveloperTools.DB.CRUD, :crud_add, 1} def create(attrs, allowed_fields) do crud_add(attrs, allowed_fields) end - @doc delegate_to: {MishkaDatabase.CRUD, :crud_edit, 1} + @doc delegate_to: {MishkaDeveloperTools.DB.CRUD, :crud_edit, 1} def edit(attrs) do crud_edit(attrs) end - @doc delegate_to: {MishkaDatabase.CRUD, :crud_edit, 1} + @doc delegate_to: {MishkaDeveloperTools.DB.CRUD, :crud_edit, 1} def edit(attrs, allowed_fields) do crud_edit(attrs, allowed_fields) end - @doc delegate_to: {MishkaDatabase.CRUD, :crud_delete, 1} + @doc delegate_to: {MishkaDeveloperTools.DB.CRUD, :crud_delete, 1} def delete(id) do crud_delete(id) end - @doc delegate_to: {MishkaDatabase.CRUD, :crud_get_record, 1} + @doc delegate_to: {MishkaDeveloperTools.DB.CRUD, :crud_get_record, 1} def show_by_id(id) do crud_get_record(id) end diff --git a/apps/mishka_content/lib/general/notif.ex b/apps/mishka_content/lib/general/notif.ex index 7033241b..895f4ca0 100644 --- a/apps/mishka_content/lib/general/notif.ex +++ b/apps/mishka_content/lib/general/notif.ex @@ -2,7 +2,7 @@ defmodule MishkaContent.General.Notif do alias MishkaDatabase.Schema.MishkaContent.Notif alias MishkaContent.General.UserNotifStatus import Ecto.Query - use MishkaDatabase.CRUD, + use MishkaDeveloperTools.DB.CRUD, module: Notif, error_atom: :notif, repo: MishkaDatabase.Repo @@ -13,43 +13,43 @@ defmodule MishkaContent.General.Notif do @type repo_data() :: Ecto.Schema.t() @type repo_error() :: Ecto.Changeset.t() - @behaviour MishkaDatabase.CRUD + @behaviour MishkaDeveloperTools.DB.CRUD def subscribe do Phoenix.PubSub.subscribe(MishkaHtml.PubSub, "notif") end - @doc delegate_to: {MishkaDatabase.CRUD, :crud_add, 1} + @doc delegate_to: {MishkaDeveloperTools.DB.CRUD, :crud_add, 1} def create(attrs) do crud_add(attrs) |> notify_subscribers(:notif) end - @doc delegate_to: {MishkaDatabase.CRUD, :crud_add, 1} + @doc delegate_to: {MishkaDeveloperTools.DB.CRUD, :crud_add, 1} def create(attrs, allowed_fields) do crud_add(attrs, allowed_fields) |> notify_subscribers(:notif) end - @doc delegate_to: {MishkaDatabase.CRUD, :crud_edit, 1} + @doc delegate_to: {MishkaDeveloperTools.DB.CRUD, :crud_edit, 1} def edit(attrs) do crud_edit(attrs) |> notify_subscribers(:notif) end - @doc delegate_to: {MishkaDatabase.CRUD, :crud_edit, 1} + @doc delegate_to: {MishkaDeveloperTools.DB.CRUD, :crud_edit, 1} def edit(attrs, allowed_fields) do crud_edit(attrs, allowed_fields) |> notify_subscribers(:notif) end - @doc delegate_to: {MishkaDatabase.CRUD, :crud_delete, 1} + @doc delegate_to: {MishkaDeveloperTools.DB.CRUD, :crud_delete, 1} def delete(id) do crud_delete(id) |> notify_subscribers(:notif) end - @doc delegate_to: {MishkaDatabase.CRUD, :crud_get_record, 1} + @doc delegate_to: {MishkaDeveloperTools.DB.CRUD, :crud_get_record, 1} def show_by_id(id) do crud_get_record(id) end diff --git a/apps/mishka_content/lib/general/subscription.ex b/apps/mishka_content/lib/general/subscription.ex index ced0eba0..1c54d8f2 100644 --- a/apps/mishka_content/lib/general/subscription.ex +++ b/apps/mishka_content/lib/general/subscription.ex @@ -2,7 +2,7 @@ defmodule MishkaContent.General.Subscription do alias MishkaDatabase.Schema.MishkaContent.Subscription import Ecto.Query - use MishkaDatabase.CRUD, + use MishkaDeveloperTools.DB.CRUD, module: Subscription, error_atom: :subscription, repo: MishkaDatabase.Repo @@ -13,43 +13,43 @@ defmodule MishkaContent.General.Subscription do @type repo_data() :: Ecto.Schema.t() @type repo_error() :: Ecto.Changeset.t() - @behaviour MishkaDatabase.CRUD + @behaviour MishkaDeveloperTools.DB.CRUD def subscribe do Phoenix.PubSub.subscribe(MishkaHtml.PubSub, "subscription") end - @doc delegate_to: {MishkaDatabase.CRUD, :crud_add, 1} + @doc delegate_to: {MishkaDeveloperTools.DB.CRUD, :crud_add, 1} def create(attrs) do crud_add(attrs) |> notify_subscribers(:subscription) end - @doc delegate_to: {MishkaDatabase.CRUD, :crud_add, 1} + @doc delegate_to: {MishkaDeveloperTools.DB.CRUD, :crud_add, 1} def create(attrs, allowed_fields) do crud_add(attrs, allowed_fields) |> notify_subscribers(:subscription) end - @doc delegate_to: {MishkaDatabase.CRUD, :crud_edit, 1} + @doc delegate_to: {MishkaDeveloperTools.DB.CRUD, :crud_edit, 1} def edit(attrs) do crud_edit(attrs) |> notify_subscribers(:subscription) end - @doc delegate_to: {MishkaDatabase.CRUD, :crud_edit, 1} + @doc delegate_to: {MishkaDeveloperTools.DB.CRUD, :crud_edit, 1} def edit(attrs, allowed_fields) do crud_edit(attrs, allowed_fields) |> notify_subscribers(:subscription) end - @doc delegate_to: {MishkaDatabase.CRUD, :crud_delete, 1} + @doc delegate_to: {MishkaDeveloperTools.DB.CRUD, :crud_delete, 1} def delete(id) do crud_delete(id) |> notify_subscribers(:subscription) end - @doc delegate_to: {MishkaDatabase.CRUD, :crud_get_record, 1} + @doc delegate_to: {MishkaDeveloperTools.DB.CRUD, :crud_get_record, 1} def show_by_id(id) do crud_get_record(id) end diff --git a/apps/mishka_content/lib/general/user_notif_status.ex b/apps/mishka_content/lib/general/user_notif_status.ex index dcfeede9..c7f57783 100644 --- a/apps/mishka_content/lib/general/user_notif_status.ex +++ b/apps/mishka_content/lib/general/user_notif_status.ex @@ -3,7 +3,7 @@ defmodule MishkaContent.General.UserNotifStatus do alias MishkaDatabase.Schema.MishkaContent.UserNotifStatus import Ecto.Query - use MishkaDatabase.CRUD, + use MishkaDeveloperTools.DB.CRUD, module: UserNotifStatus, error_atom: :user_notif_status, repo: MishkaDatabase.Repo @@ -14,34 +14,34 @@ defmodule MishkaContent.General.UserNotifStatus do @type repo_data() :: Ecto.Schema.t() @type repo_error() :: Ecto.Changeset.t() - @behaviour MishkaDatabase.CRUD + @behaviour MishkaDeveloperTools.DB.CRUD - @doc delegate_to: {MishkaDatabase.CRUD, :crud_add, 1} + @doc delegate_to: {MishkaDeveloperTools.DB.CRUD, :crud_add, 1} def create(attrs) do crud_add(attrs) end - @doc delegate_to: {MishkaDatabase.CRUD, :crud_add, 1} + @doc delegate_to: {MishkaDeveloperTools.DB.CRUD, :crud_add, 1} def create(attrs, allowed_fields) do crud_add(attrs, allowed_fields) end - @doc delegate_to: {MishkaDatabase.CRUD, :crud_edit, 1} + @doc delegate_to: {MishkaDeveloperTools.DB.CRUD, :crud_edit, 1} def edit(attrs) do crud_edit(attrs) end - @doc delegate_to: {MishkaDatabase.CRUD, :crud_edit, 1} + @doc delegate_to: {MishkaDeveloperTools.DB.CRUD, :crud_edit, 1} def edit(attrs, allowed_fields) do crud_edit(attrs, allowed_fields) end - @doc delegate_to: {MishkaDatabase.CRUD, :crud_delete, 1} + @doc delegate_to: {MishkaDeveloperTools.DB.CRUD, :crud_delete, 1} def delete(id) do crud_delete(id) end - @doc delegate_to: {MishkaDatabase.CRUD, :crud_get_record, 1} + @doc delegate_to: {MishkaDeveloperTools.DB.CRUD, :crud_get_record, 1} def show_by_id(id) do crud_get_record(id) end diff --git a/apps/mishka_database/lib/helpers/crud.ex b/apps/mishka_database/lib/helpers/crud.ex deleted file mode 100644 index 6d78ab49..00000000 --- a/apps/mishka_database/lib/helpers/crud.ex +++ /dev/null @@ -1,359 +0,0 @@ -defmodule MishkaDatabase.CRUD do - @moduledoc """ - ## Simplified CRUD macro using Ecto - - With this module, you can easily implement CRUD-related items in your file wherever you need to build a query. - These modules and their sub-macros were created more to create a one-piece structure, and you can implement your own custom items in umbrella projects. - In the first step, to use the following macros, you must bind the requested information in the relevant module that you have already created as follows. - ```elixir - use MishkaDatabase.CRUD, - module: YOURschemaMODULE, - error_atom: :your_error_tag, - repo: Your.Repo - ``` - It should be noted that the following three parameters must be sent and also make sure you are connected to the database. - - ```elixir - module - error_atom - repo - ``` - """ - - - - # MishkaUser.User custom Typespecs - @type data_uuid() :: Ecto.UUID.t - @type record_input() :: map() - @type error_tag() :: atom() - @type email() :: String.t() - @type username() :: String.t() - @type repo_data() :: Ecto.Schema.t() - @type repo_error() :: Ecto.Changeset.t() - - - @callback create(record_input()) :: - {:error, :add, error_tag(), repo_error()} | - {:ok, :add, error_tag(), repo_data()} - - @callback edit(record_input()) :: - {:error, :edit, :uuid, error_tag()} | - {:error, :edit, :get_record_by_id, error_tag()} | - {:error, :edit, error_tag(), repo_error()} | - {:ok, :edit, error_tag(), repo_data()} - - @callback delete(data_uuid()) :: - {:error, :delete, :uuid, error_tag()} | - {:error, :delete, :get_record_by_id, error_tag()} | - {:error, :delete, :forced_to_delete, error_tag()} | - {:error, :delete, error_tag(), repo_error()} | - {:ok, :delete, error_tag(), repo_data()} - - - @callback show_by_id(data_uuid()) :: - {:error, :get_record_by_id, error_tag()} | - {:ok, :get_record_by_id, error_tag(), repo_data()} - - - defmacro __using__(opts) do - quote(bind_quoted: [opts: opts]) do - import MishkaDatabase.CRUD - @interface_module opts - end - end - - @doc """ - ### Creating a record macro - - ## Example - ```elixir - crud_add(map_of_info like: %{name: "trangell"}) - ``` - The input of this macro is a map and its output are a map. For example - - ```elixir - {:ok, :add, error_atom, data} - {:error, :add, error_atom, changeset} - ``` - - If you want only the selected parameters to be separated from the list of submitted parameters and sent to the database, use the same macro with input 2 - - ### Example - ```elixir - crud_add(map_of_info like: %{name: "trangell"}, [:name]) - ``` - """ - defmacro crud_add(attrs) do - quote do - module_selected = Keyword.get(@interface_module, :module) - error_atom = Keyword.get(@interface_module, :error_atom) - repo = Keyword.get(@interface_module, :repo) - - add = module_selected.__struct__ - |> module_selected.changeset(unquote(attrs)) - |> repo.insert() - case add do - {:ok, data} -> {:ok, :add, error_atom, data} - {:error, changeset} -> {:error, :add, error_atom, changeset} - end - end - end - - defmacro crud_add(attrs, allowed_fields) do - quote do - module_selected = Keyword.get(@interface_module, :module) - error_atom = Keyword.get(@interface_module, :error_atom) - repo = Keyword.get(@interface_module, :repo) - - add = module_selected.__struct__ - |> module_selected.changeset(Map.take(unquote(attrs), unquote(allowed_fields))) - |> repo.insert() - case add do - {:ok, data} -> {:ok, :add, error_atom, data} - {:error, changeset} -> {:error, :add, error_atom, changeset} - end - end - end - - - - @doc """ - ### Edit a record in a database Macro - - With the help of this macro, you can edit a record in the database with its ID. For this purpose, you must send the requested record ID along with the new Map parameters. Otherwise the macro returns the ID error. - - ## Example - ```elixir - crud_edit(map_of_info like: %{id: "6d80d5f4-781b-4fa8-9796-1821804de6ba",name: "trangell"}) - ``` - > Note that the sending ID must be of UUID type. - - The input of this macro is a map and its output are a map. For example - - ```elixir - # If your request has been saved successfully - {:ok, :edit, error_atom, info} - # If your ID is not uuid type - {:error, :edit, error_atom, :uuid} - # If there is an error in sending the data - {:error, :edit, error_atom, changeset} - # If no record is found for your ID - {:error, :delete, error_atom, :get_record_by_id} - ``` - - It should be noted that if you want only the selected fields to be separated from the submitted parameters and sent to the database, use the macro with dual input. - - ## Example - ```elixir - crud_edit(map_of_info like: %{id: "6d80d5f4-781b-4fa8-9796-1821804de6ba", name: "trangell"}, [:id, :name]) - ``` - """ - defmacro crud_edit(attr) do - quote do - module_selected = Keyword.get(@interface_module, :module) - error_atom = Keyword.get(@interface_module, :error_atom) - repo = Keyword.get(@interface_module, :repo) - - MishkaDatabase.CRUD.edit_record(unquote(attr), module_selected, error_atom, repo) - end - end - - defmacro crud_edit(attrs, allowed_fields) do - quote do - module_selected = Keyword.get(@interface_module, :module) - error_atom = Keyword.get(@interface_module, :error_atom) - repo = Keyword.get(@interface_module, :repo) - - MishkaDatabase.CRUD.edit_record(Map.take(unquote(attrs), unquote(allowed_fields)), module_selected, error_atom, repo) - end - end - - - @doc """ - ### delete a record from the database with the help of ID Macro - - With the help of this macro, you can delete your requested record from the database. - The input of this macro is a UUID and its output is a map - - - ## Example - ```elixir - crud_delete("6d80d5f4-781b-4fa8-9796-1821804de6ba") - ``` - Output: - You should note that this macro prevents the orphan data of the record requested to be deleted. So, use this macro when the other data is not dependent on the data with the ID sent by you. - - - - Outputs: - - ```elixir - # This message will be returned when your data has been successfully deleted - {:ok, :delete, error_atom, struct} - # This error will be returned if the ID sent by you is not a UUID - {:error, :delete, error_atom, :uuid} - # This error is reversed when an error occurs while sending data - {:error, :delete, error_atom, changeset} - # This error will be reversed when there is no submitted ID in the database - {:error, :delete, error_atom, :get_record_by_id} - # This error is reversed when another record is associated with this record - {:error, :delete, error_atom, :forced_to_delete} - ``` - """ - defmacro crud_delete(id) do - quote do - module_selected = Keyword.get(@interface_module, :module) - error_atom = Keyword.get(@interface_module, :error_atom) - repo = Keyword.get(@interface_module, :repo) - - MishkaDatabase.CRUD.delete_record(unquote(id), module_selected, error_atom, repo) - end - end - - - @doc """ - ### Macro Finding a record in a database with the help of ID - - With the help of this macro, you can send an ID that is of UUID type and call it if there is a record in the database. - The output of this macro is map. - - - # Example - ```elixir - crud_get_record("6d80d5f4-781b-4fa8-9796-1821804de6ba") - ``` - - Outputs: - - ``` - {:error, error_atom, :get_record_by_id} - {:ok, error_atom, :get_record_by_id, record_info} - ``` - - """ - defmacro crud_get_record(id) do - quote do - module_selected = Keyword.get(@interface_module, :module) - error_atom = Keyword.get(@interface_module, :error_atom) - repo = Keyword.get(@interface_module, :repo) - MishkaDatabase.CRUD.get_record_by_id(unquote(id), module_selected, error_atom, repo) - end - end - - - @doc """ - ### Macro Find a record in the database with the help of the requested field - - With the help of this macro, you can find a field with the value you want, if it exists in the database. It should be noted that the field name must be entered as a String. - - - # Example - ```elixir - crud_get_by_field("email", "info@trangell.com") - ``` - - Outputs: - - ``` - {:error, error_atom, :get_record_by_field} - {:ok, error_atom, :get_record_by_field, record_info} - ``` - - """ - defmacro crud_get_by_field(field, value) do - quote do - module_selected = Keyword.get(@interface_module, :module) - error_atom = Keyword.get(@interface_module, :error_atom) - repo = Keyword.get(@interface_module, :repo) - - MishkaDatabase.CRUD.get_record_by_field(unquote(field), unquote(value), module_selected, error_atom, repo) - end - end - - - - - - # functions to create macro - @doc false - def update(changeset, attrs, module, repo) do - module.changeset(changeset, attrs) - |> repo.update - end - - - @doc false - def uuid(id) do - case Ecto.UUID.cast(id) do - {:ok, record_id} -> {:ok, :uuid, record_id} - _ -> {:error, :uuid} - end - end - - - @doc false - def get_record_by_id(id, module, error_atom, repo) do - case repo.get(module, id) do - nil -> {:error, :get_record_by_id, error_atom} - record_info -> {:ok, :get_record_by_id, error_atom, record_info} - end - rescue - _ -> {:error, :get_record_by_id, error_atom} - end - - - @doc false - def get_record_by_field(field, value, module, error_atom, repo) do - case repo.get_by(module, "#{field}": value) do - nil -> {:error, :get_record_by_field, error_atom} - record_info -> {:ok, :get_record_by_field, error_atom, record_info} - end - rescue - _ -> {:error, :get_record_by_id, error_atom} - end - - - @doc false - def edit_record(attrs, module, error_atom, repo) do - with {:ok, :uuid, record_id} <- uuid(if Map.has_key?(attrs, :id), do: attrs.id, else: attrs["id"]), - {:ok, :get_record_by_id, error_atom, record_info} <- get_record_by_id(record_id, module, error_atom, repo), - {:ok, info} <- update(record_info, attrs, module, repo) do - - {:ok, :edit, error_atom, info} - else - {:error, :uuid} -> - {:error, :edit, :uuid, error_atom} - - {:error, changeset} -> - {:error, :edit, error_atom, changeset} - - _ -> - {:error, :edit, :get_record_by_id, error_atom} - end - end - - - @doc false - def delete_record(id, module, error_atom, repo) do - try do - with {:ok, :uuid, record_id} <- uuid(id), - {:ok, :get_record_by_id, error_atom, record_info} <- get_record_by_id(record_id, module, error_atom, repo), - {:ok, struct} <- repo.delete(record_info) do - - {:ok, :delete, error_atom, struct} - else - {:error, :uuid} -> - {:error, :delete, :uuid, error_atom} - - {:error, changeset} -> - {:error, :delete, error_atom, changeset} - - _ -> - {:error, :delete, :get_record_by_id, error_atom} - end - rescue - _e in Ecto.ConstraintError -> {:error, :delete, :forced_to_delete, error_atom} - end - end - -end diff --git a/apps/mishka_database/lib/public/setting.ex b/apps/mishka_database/lib/public/setting.ex index 909b92e1..48960d8e 100644 --- a/apps/mishka_database/lib/public/setting.ex +++ b/apps/mishka_database/lib/public/setting.ex @@ -3,7 +3,7 @@ defmodule MishkaDatabase.Public.Setting do alias MishkaDatabase.Schema.Public.Setting, as: SettingSchema import Ecto.Query - use MishkaDatabase.CRUD, + use MishkaDeveloperTools.DB.CRUD, module: SettingSchema, error_atom: :setting, repo: MishkaDatabase.Repo @@ -15,13 +15,13 @@ defmodule MishkaDatabase.Public.Setting do @type repo_data() :: Ecto.Schema.t() @type repo_error() :: Ecto.Changeset.t() - @behaviour MishkaDatabase.CRUD + @behaviour MishkaDeveloperTools.DB.CRUD def subscribe do Phoenix.PubSub.subscribe(MishkaHtml.PubSub, "setting") end - @doc delegate_to: {MishkaDatabase.CRUD, :crud_add, 1} + @doc delegate_to: {MishkaDeveloperTools.DB.CRUD, :crud_add, 1} def create(attrs) do crud_add(attrs) |> notify_subscribers(:setting) @@ -31,19 +31,19 @@ defmodule MishkaDatabase.Public.Setting do crud_add(attrs) end - @doc delegate_to: {MishkaDatabase.CRUD, :crud_edit, 1} + @doc delegate_to: {MishkaDeveloperTools.DB.CRUD, :crud_edit, 1} def edit(attrs) do crud_edit(attrs) |> notify_subscribers(:setting) end - @doc delegate_to: {MishkaDatabase.CRUD, :crud_delete, 1} + @doc delegate_to: {MishkaDeveloperTools.DB.CRUD, :crud_delete, 1} def delete(id) do crud_delete(id) |> notify_subscribers(:setting) end - @doc delegate_to: {MishkaDatabase.CRUD, :crud_get_record, 1} + @doc delegate_to: {MishkaDeveloperTools.DB.CRUD, :crud_get_record, 1} def show_by_id(id) do crud_get_record(id) end diff --git a/apps/mishka_database/mix.exs b/apps/mishka_database/mix.exs index afb84de3..880c2a1f 100644 --- a/apps/mishka_database/mix.exs +++ b/apps/mishka_database/mix.exs @@ -28,8 +28,9 @@ defmodule MishkaDatabase.MixProject do # Run "mix help deps" to learn about dependencies. defp deps do [ - {:ecto_sql, "~> 3.7"}, - {:postgrex, "~> 0.15.10"}, + {:ecto_sql, "~> 3.7", override: true}, + {:postgrex, "~> 0.15.13", override: true}, + {:mishka_developer_tools, "~> 0.0.2"}, {:comeonin, "~> 5.3"}, {:bcrypt_elixir, "~> 2.3"}, {:ecto_enum, "~> 1.4"}, diff --git a/apps/mishka_database/test/helpers/mishka_database_crud_macro_test.exs b/apps/mishka_database/test/helpers/mishka_database_crud_macro_test.exs index fcb9bce0..dde187ae 100644 --- a/apps/mishka_database/test/helpers/mishka_database_crud_macro_test.exs +++ b/apps/mishka_database/test/helpers/mishka_database_crud_macro_test.exs @@ -1,7 +1,7 @@ defmodule MishkaDatabase.Helpers.CrudMacroTest do use ExUnit.Case, async: true doctest MishkaDatabase - use MishkaDatabase.CRUD, + use MishkaDeveloperTools.DB.CRUD, module: MishkaDatabase.Schema.MishkaUser.User, error_atom: :user, repo: MishkaDatabase.Repo diff --git a/apps/mishka_user/lib/acl/permission.ex b/apps/mishka_user/lib/acl/permission.ex index 77570bb3..96d59cb3 100644 --- a/apps/mishka_user/lib/acl/permission.ex +++ b/apps/mishka_user/lib/acl/permission.ex @@ -6,7 +6,7 @@ defmodule MishkaUser.Acl.Permission do alias MishkaDatabase.Schema.MishkaUser.Permission import Ecto.Query - use MishkaDatabase.CRUD, + use MishkaDeveloperTools.DB.CRUD, module: Permission, error_atom: :permission, repo: MishkaDatabase.Repo @@ -18,43 +18,43 @@ defmodule MishkaUser.Acl.Permission do @type repo_data() :: Ecto.Schema.t() @type repo_error() :: Ecto.Changeset.t() - @behaviour MishkaDatabase.CRUD + @behaviour MishkaDeveloperTools.DB.CRUD def subscribe do Phoenix.PubSub.subscribe(MishkaHtml.PubSub, "permission") end - @doc delegate_to: {MishkaDatabase.CRUD, :crud_add, 1} + @doc delegate_to: {MishkaDeveloperTools.DB.CRUD, :crud_add, 1} def create(attrs) do crud_add(attrs) |> notify_subscribers(:permission) end - @doc delegate_to: {MishkaDatabase.CRUD, :crud_add, 1} + @doc delegate_to: {MishkaDeveloperTools.DB.CRUD, :crud_add, 1} def create(attrs, allowed_fields) do crud_add(attrs, allowed_fields) |> notify_subscribers(:permission) end - @doc delegate_to: {MishkaDatabase.CRUD, :crud_edit, 1} + @doc delegate_to: {MishkaDeveloperTools.DB.CRUD, :crud_edit, 1} def edit(attrs) do crud_edit(attrs) |> notify_subscribers(:permission) end - @doc delegate_to: {MishkaDatabase.CRUD, :crud_edit, 1} + @doc delegate_to: {MishkaDeveloperTools.DB.CRUD, :crud_edit, 1} def edit(attrs, allowed_fields) do crud_edit(attrs, allowed_fields) |> notify_subscribers(:permission) end - @doc delegate_to: {MishkaDatabase.CRUD, :crud_delete, 1} + @doc delegate_to: {MishkaDeveloperTools.DB.CRUD, :crud_delete, 1} def delete(id) do crud_delete(id) |> notify_subscribers(:permission) end - @doc delegate_to: {MishkaDatabase.CRUD, :crud_get_record, 1} + @doc delegate_to: {MishkaDeveloperTools.DB.CRUD, :crud_get_record, 1} def show_by_id(id) do crud_get_record(id) end diff --git a/apps/mishka_user/lib/acl/role.ex b/apps/mishka_user/lib/acl/role.ex index 92e183f4..a5d83b48 100644 --- a/apps/mishka_user/lib/acl/role.ex +++ b/apps/mishka_user/lib/acl/role.ex @@ -6,7 +6,7 @@ defmodule MishkaUser.Acl.Role do alias MishkaDatabase.Schema.MishkaUser.Role import Ecto.Query - use MishkaDatabase.CRUD, + use MishkaDeveloperTools.DB.CRUD, module: Role, error_atom: :role, repo: MishkaDatabase.Repo @@ -18,43 +18,43 @@ defmodule MishkaUser.Acl.Role do @type repo_data() :: Ecto.Schema.t() @type repo_error() :: Ecto.Changeset.t() - @behaviour MishkaDatabase.CRUD + @behaviour MishkaDeveloperTools.DB.CRUD def subscribe do Phoenix.PubSub.subscribe(MishkaHtml.PubSub, "role") end - @doc delegate_to: {MishkaDatabase.CRUD, :crud_add, 1} + @doc delegate_to: {MishkaDeveloperTools.DB.CRUD, :crud_add, 1} def create(attrs) do crud_add(attrs) |> notify_subscribers(:role) end - @doc delegate_to: {MishkaDatabase.CRUD, :crud_add, 1} + @doc delegate_to: {MishkaDeveloperTools.DB.CRUD, :crud_add, 1} def create(attrs, allowed_fields) do crud_add(attrs, allowed_fields) |> notify_subscribers(:role) end - @doc delegate_to: {MishkaDatabase.CRUD, :crud_edit, 1} + @doc delegate_to: {MishkaDeveloperTools.DB.CRUD, :crud_edit, 1} def edit(attrs) do crud_edit(attrs) |> notify_subscribers(:role) end - @doc delegate_to: {MishkaDatabase.CRUD, :crud_edit, 1} + @doc delegate_to: {MishkaDeveloperTools.DB.CRUD, :crud_edit, 1} def edit(attrs, allowed_fields) do crud_edit(attrs, allowed_fields) |> notify_subscribers(:role) end - @doc delegate_to: {MishkaDatabase.CRUD, :crud_delete, 1} + @doc delegate_to: {MishkaDeveloperTools.DB.CRUD, :crud_delete, 1} def delete(id) do crud_delete(id) |> notify_subscribers(:role) end - @doc delegate_to: {MishkaDatabase.CRUD, :crud_get_record, 1} + @doc delegate_to: {MishkaDeveloperTools.DB.CRUD, :crud_get_record, 1} def show_by_id(id) do crud_get_record(id) end diff --git a/apps/mishka_user/lib/acl/user_role.ex b/apps/mishka_user/lib/acl/user_role.ex index 15f1ea5d..8497409f 100644 --- a/apps/mishka_user/lib/acl/user_role.ex +++ b/apps/mishka_user/lib/acl/user_role.ex @@ -1,7 +1,7 @@ defmodule MishkaUser.Acl.UserRole do alias MishkaDatabase.Schema.MishkaUser.UserRole import Ecto.Query - use MishkaDatabase.CRUD, + use MishkaDeveloperTools.DB.CRUD, module: UserRole, error_atom: :user_role, repo: MishkaDatabase.Repo @@ -13,34 +13,34 @@ defmodule MishkaUser.Acl.UserRole do @type repo_data() :: Ecto.Schema.t() @type repo_error() :: Ecto.Changeset.t() - @behaviour MishkaDatabase.CRUD + @behaviour MishkaDeveloperTools.DB.CRUD - @doc delegate_to: {MishkaDatabase.CRUD, :crud_add, 1} + @doc delegate_to: {MishkaDeveloperTools.DB.CRUD, :crud_add, 1} def create(attrs) do crud_add(attrs) end - @doc delegate_to: {MishkaDatabase.CRUD, :crud_add, 1} + @doc delegate_to: {MishkaDeveloperTools.DB.CRUD, :crud_add, 1} def create(attrs, allowed_fields) do crud_add(attrs, allowed_fields) end - @doc delegate_to: {MishkaDatabase.CRUD, :crud_edit, 1} + @doc delegate_to: {MishkaDeveloperTools.DB.CRUD, :crud_edit, 1} def edit(attrs) do crud_edit(attrs) end - @doc delegate_to: {MishkaDatabase.CRUD, :crud_edit, 1} + @doc delegate_to: {MishkaDeveloperTools.DB.CRUD, :crud_edit, 1} def edit(attrs, allowed_fields) do crud_edit(attrs, allowed_fields) end - @doc delegate_to: {MishkaDatabase.CRUD, :crud_delete, 1} + @doc delegate_to: {MishkaDeveloperTools.DB.CRUD, :crud_delete, 1} def delete(id) do crud_delete(id) end - @doc delegate_to: {MishkaDatabase.CRUD, :crud_get_record, 1} + @doc delegate_to: {MishkaDeveloperTools.DB.CRUD, :crud_get_record, 1} def show_by_id(id) do crud_get_record(id) end diff --git a/apps/mishka_user/lib/identity.ex b/apps/mishka_user/lib/identity.ex index 4bd6ffd2..a8d0e686 100644 --- a/apps/mishka_user/lib/identity.ex +++ b/apps/mishka_user/lib/identity.ex @@ -6,7 +6,7 @@ defmodule MishkaUser.Identity do alias MishkaDatabase.Schema.MishkaUser.IdentityProvider import Ecto.Query - use MishkaDatabase.CRUD, + use MishkaDeveloperTools.DB.CRUD, module: IdentityProvider, error_atom: :identity, repo: MishkaDatabase.Repo @@ -20,35 +20,35 @@ defmodule MishkaUser.Identity do @type repo_data() :: Ecto.Schema.t() @type repo_error() :: Ecto.Changeset.t() - @behaviour MishkaDatabase.CRUD + @behaviour MishkaDeveloperTools.DB.CRUD - @doc delegate_to: {MishkaDatabase.CRUD, :crud_add, 1} + @doc delegate_to: {MishkaDeveloperTools.DB.CRUD, :crud_add, 1} def create(attrs) do crud_add(attrs) end - @doc delegate_to: {MishkaDatabase.CRUD, :crud_add, 1} + @doc delegate_to: {MishkaDeveloperTools.DB.CRUD, :crud_add, 1} def create(attrs, allowed_fields) do crud_add(attrs, allowed_fields) end - @doc delegate_to: {MishkaDatabase.CRUD, :crud_edit, 1} + @doc delegate_to: {MishkaDeveloperTools.DB.CRUD, :crud_edit, 1} def edit(attrs) do crud_edit(attrs) end - @doc delegate_to: {MishkaDatabase.CRUD, :crud_edit, 1} + @doc delegate_to: {MishkaDeveloperTools.DB.CRUD, :crud_edit, 1} def edit(attrs, allowed_fields) do crud_edit(attrs, allowed_fields) end - @doc delegate_to: {MishkaDatabase.CRUD, :crud_delete, 1} + @doc delegate_to: {MishkaDeveloperTools.DB.CRUD, :crud_delete, 1} def delete(id) do crud_delete(id) end - @doc delegate_to: {MishkaDatabase.CRUD, :crud_get_record, 1} + @doc delegate_to: {MishkaDeveloperTools.DB.CRUD, :crud_get_record, 1} def show_by_id(id) do crud_get_record(id) end diff --git a/apps/mishka_user/lib/user.ex b/apps/mishka_user/lib/user.ex index b4cb73d3..ef45e6b3 100644 --- a/apps/mishka_user/lib/user.ex +++ b/apps/mishka_user/lib/user.ex @@ -7,7 +7,7 @@ defmodule MishkaUser.User do import Ecto.Query alias MishkaDatabase.Schema.MishkaUser.User - use MishkaDatabase.CRUD, + use MishkaDeveloperTools.DB.CRUD, module: User, error_atom: :user, repo: MishkaDatabase.Repo @@ -23,7 +23,7 @@ defmodule MishkaUser.User do @type repo_error() :: Ecto.Changeset.t() @type password() :: String.t() - @behaviour MishkaDatabase.CRUD + @behaviour MishkaDeveloperTools.DB.CRUD def subscribe do @@ -34,37 +34,37 @@ defmodule MishkaUser.User do this function starts push notification in this module. """ - @doc delegate_to: {MishkaDatabase.CRUD, :crud_add, 1} + @doc delegate_to: {MishkaDeveloperTools.DB.CRUD, :crud_add, 1} def create(attrs) do crud_add(Map.merge(attrs, %{"unconfirmed_email" => attrs["email"]})) |> notify_subscribers(:user) end - @doc delegate_to: {MishkaDatabase.CRUD, :crud_add, 1} + @doc delegate_to: {MishkaDeveloperTools.DB.CRUD, :crud_add, 1} def create(attrs, allowed_fields) do crud_add(Map.merge(attrs, %{"unconfirmed_email" => attrs["email"]}), allowed_fields) |> notify_subscribers(:user) end - @doc delegate_to: {MishkaDatabase.CRUD, :crud_edit, 1} + @doc delegate_to: {MishkaDeveloperTools.DB.CRUD, :crud_edit, 1} def edit(attrs) do crud_edit(attrs) |> notify_subscribers(:user) end - @doc delegate_to: {MishkaDatabase.CRUD, :crud_edit, 1} + @doc delegate_to: {MishkaDeveloperTools.DB.CRUD, :crud_edit, 1} def edit(attrs, allowed_fields) do crud_edit(attrs, allowed_fields) |> notify_subscribers(:user) end - @doc delegate_to: {MishkaDatabase.CRUD, :crud_delete, 1} + @doc delegate_to: {MishkaDeveloperTools.DB.CRUD, :crud_delete, 1} def delete(id) do crud_delete(id) |> notify_subscribers(:user) end - @doc delegate_to: {MishkaDatabase.CRUD, :crud_get_record, 1} + @doc delegate_to: {MishkaDeveloperTools.DB.CRUD, :crud_get_record, 1} def show_by_id(id) do crud_get_record(id) end diff --git a/config/prod.exs b/config/prod.exs index 552322a7..d1ce49b5 100644 --- a/config/prod.exs +++ b/config/prod.exs @@ -1,4 +1,4 @@ -use Mix.Config +import Config # For production, don't forget to configure the url host # to something meaningful, Phoenix uses this information diff --git a/config/prod.secret.exs b/config/prod.secret.exs index 56a571f1..6be36de3 100644 --- a/config/prod.secret.exs +++ b/config/prod.secret.exs @@ -2,7 +2,7 @@ # from environment variables. You can also hardcode secrets, # although such is generally not recommended and you have to # remember to add this file to your .gitignore. -use Mix.Config +import Config secret_key_base_html = System.get_env("SECRET_KEY_BASE_HTML") || diff --git a/config/test.exs b/config/test.exs index bca3d4a4..460b9334 100644 --- a/config/test.exs +++ b/config/test.exs @@ -1,4 +1,4 @@ -use Mix.Config +import Config # We don't run a server during test. If one is required, # you can enable the server option below. @@ -17,6 +17,7 @@ config :mishka_database, MishkaDatabase.Repo, database: "#{System.get_env("DATABASE_NAME")}_test#{System.get_env("MIX_TEST_PARTITION")}", hostname: "postgresql", pool_size: 10, + show_sensitive_data_on_connection_error: true, pool: Ecto.Adapters.SQL.Sandbox # Print only warnings and errors during test