Current section
19 Versions
Jump to
Current section
19 Versions
Compare versions
4
files changed
+135
additions
-15
deletions
| @@ -21,3 +21,58 @@ The docs can be found at [https://hexdocs.pm/mishka_developer_tools](https://hex | |
| 21 21 | |
| 22 22 | --- |
| 23 23 | --- |
| 24 | + |
| 25 | + ## Creating basic CRUD |
| 26 | + At first, you need to call the `__using__` macro of the Mishka developer tools. |
| 27 | + |
| 28 | + ```elixir |
| 29 | + use MishkaDeveloperTools.DB.CRUD, |
| 30 | + module: YOUR_SCHEMA_MODULE, |
| 31 | + error_atom: :YOUR_REQUESTED_ATOM, |
| 32 | + repo: YOUR_REPO_MODULE |
| 33 | + ``` |
| 34 | + |
| 35 | + And after that, you can define `@behaviour`; it is optional. |
| 36 | + ```elixir |
| 37 | + @behaviour MishkaDeveloperTools.DB.CRUD |
| 38 | + ``` |
| 39 | + |
| 40 | + Now is the time you can have your CRUD function; it should be noted you are not forced to use these macros under functions. |
| 41 | + |
| 42 | + |
| 43 | + ```elixir |
| 44 | + @doc delegate_to: {MishkaDeveloperTools.DB.CRUD, :crud_add, 1} |
| 45 | + def create(attrs) do |
| 46 | + crud_add(attrs) |
| 47 | + end |
| 48 | + |
| 49 | + @doc delegate_to: {MishkaDeveloperTools.DB.CRUD, :crud_add, 1} |
| 50 | + def create(attrs, allowed_fields) do |
| 51 | + crud_add(attrs, allowed_fields) |
| 52 | + end |
| 53 | + |
| 54 | + @doc delegate_to: {MishkaDeveloperTools.DB.CRUD, :crud_edit, 1} |
| 55 | + def edit(attrs) do |
| 56 | + crud_edit(attrs) |
| 57 | + end |
| 58 | + |
| 59 | + @doc delegate_to: {MishkaDeveloperTools.DB.CRUD, :crud_edit, 1} |
| 60 | + def edit(attrs, allowed_fields) do |
| 61 | + crud_edit(attrs, allowed_fields) |
| 62 | + end |
| 63 | + |
| 64 | + @doc delegate_to: {MishkaDeveloperTools.DB.CRUD, :crud_delete, 1} |
| 65 | + def delete(id) do |
| 66 | + crud_delete(id) |
| 67 | + end |
| 68 | + |
| 69 | + @doc delegate_to: {MishkaDeveloperTools.DB.CRUD, :crud_get_record, 1} |
| 70 | + def show_by_id(id) do |
| 71 | + crud_get_record(id) |
| 72 | + end |
| 73 | + |
| 74 | + # It is optional |
| 75 | + def get_something(field) do |
| 76 | + crud_get_by_field("field", field) |
| 77 | + end |
| 78 | + ``` |
| \ No newline at end of file |
| @@ -0,0 +1,66 @@ | |
| 1 | + # کتابخانه و ابزار های توسعه پروژه الیکسیر |
| 2 | + اخیرا تیم [میشکا](https://github.com/mishka-group) در حال توسعه [سیستم مدیریت محتوا](https://github.com/mishka-group/mishka-cms) می باشد که تصمیم بر این گرفتیم برخی از شبهه کد های آن را استخراج و تبدیل به افزونه قابل نصب در پروژه های الیکسیر کنیم.در حقیقت این کتابخانه تشکیل شده از چند ماکرو و فانکشن برای راحتی کار با بانک اطلاعاتی و دیگر بخش ها یک پروژه می باشد. |
| 3 | + |
| 4 | + ## نصب |
| 5 | + ```elixir |
| 6 | + def deps do |
| 7 | + [ |
| 8 | + {:mishka_developer_tools, "~> 0.0.6"} |
| 9 | + ] |
| 10 | + end |
| 11 | + ``` |
| 12 | + > برای مشاهده اسناد این کتابخانه به لینک https://hexdocs.pm/mishka_developer_tools مراجعه کنید. |
| 13 | + |
| 14 | + ## پیادهسازی سریع CRUD |
| 15 | + برای پیادهسازی توابع اولیه ساخت CRUD فقط کافی می باشد موارد زیر را به ترتیب انجام بدهید. |
| 16 | + |
| 17 | + ### فراخوانی ماکرو |
| 18 | + ```elixir |
| 19 | + use MishkaDeveloperTools.DB.CRUD, |
| 20 | + module: YOUR_SCHEMA, |
| 21 | + error_atom: :YOUR_REQUESTED_ATOM, |
| 22 | + repo: YOUR_REPO_MODULE |
| 23 | + ``` |
| 24 | + شما بعد از فراخوانی تابع `__using__` کافی می باشد سه پارامتر بالا از جمعه {`module`, `error_atom`, `repo`} را ارزش گذاری نمایید. و همینطور برای نظم بخشیدن به ساختار کد های خودتان می توانید `@behaviour` که در این کتابخانه نوشته شده است را نیز در فایل خود فراخوانی کنید. |
| 25 | + ```elixir |
| 26 | + @behaviour MishkaDeveloperTools.DB.CRUD |
| 27 | + ``` |
| 28 | + و حال نوبت به این رسیده است که ماکرو های `CRUD` را فراخوانی کنید. توجه داشته باشید این ماکرو ها حتما نیازی ندارند که در یک تابع قرار داده بشود |
| 29 | + |
| 30 | + ```elixir |
| 31 | + @doc delegate_to: {MishkaDeveloperTools.DB.CRUD, :crud_add, 1} |
| 32 | + def create(attrs) do |
| 33 | + crud_add(attrs) |
| 34 | + end |
| 35 | + |
| 36 | + @doc delegate_to: {MishkaDeveloperTools.DB.CRUD, :crud_add, 1} |
| 37 | + def create(attrs, allowed_fields) do |
| 38 | + crud_add(attrs, allowed_fields) |
| 39 | + end |
| 40 | + |
| 41 | + @doc delegate_to: {MishkaDeveloperTools.DB.CRUD, :crud_edit, 1} |
| 42 | + def edit(attrs) do |
| 43 | + crud_edit(attrs) |
| 44 | + end |
| 45 | + |
| 46 | + @doc delegate_to: {MishkaDeveloperTools.DB.CRUD, :crud_edit, 1} |
| 47 | + def edit(attrs, allowed_fields) do |
| 48 | + crud_edit(attrs, allowed_fields) |
| 49 | + end |
| 50 | + |
| 51 | + @doc delegate_to: {MishkaDeveloperTools.DB.CRUD, :crud_delete, 1} |
| 52 | + def delete(id) do |
| 53 | + crud_delete(id) |
| 54 | + end |
| 55 | + |
| 56 | + @doc delegate_to: {MishkaDeveloperTools.DB.CRUD, :crud_get_record, 1} |
| 57 | + def show_by_id(id) do |
| 58 | + crud_get_record(id) |
| 59 | + end |
| 60 | + ``` |
| 61 | + |
| 62 | + لازم به ذکر است ماکرو دیگری نیز وجود دارد که برای آن `callback` درست نگردیده است ولی می توانید به صورت زیر فراخوانی گردد |
| 63 | + ```elixir |
| 64 | + crud_get_by_field("alias_link", alias_link) |
| 65 | + ``` |
| 66 | + در ماکرو بالا بجای `alias_link` می توانید فیلد مورد نظری که می خواهد به صورت `get_by` فراخوانی کنید را قرار بدهید. |
| \ No newline at end of file |
| @@ -7,26 +7,26 @@ | |
| 7 7 | [<<"lib">>,<<"lib/macros">>,<<"lib/macros/database">>, |
| 8 8 | <<"lib/macros/database/crud.ex">>,<<"lib/mishka_developer_tools.ex">>, |
| 9 9 | <<"lib/application.ex">>,<<".formatter.exs">>,<<"mix.exs">>,<<"LICENSE">>, |
| 10 | - <<"README.md">>]}. |
| 10 | + <<"README.md">>,<<"README_FA.md">>]}. |
| 11 11 | {<<"licenses">>,[<<"Apache License 2.0">>]}. |
| 12 12 | {<<"links">>, |
| 13 13 | [{<<"GitHub">>, |
| 14 14 | <<"https://github.com/mishka-group/mishka_developer_tools">>}]}. |
| 15 15 | {<<"name">>,<<"mishka_developer_tools">>}. |
| 16 16 | {<<"requirements">>, |
| 17 | - [[{<<"app">>,<<"ecto">>}, |
| 18 | - {<<"name">>,<<"ecto">>}, |
| 19 | - {<<"optional">>,false}, |
| 20 | - {<<"repository">>,<<"hexpm">>}, |
| 21 | - {<<"requirement">>,<<"~> 3.7">>}], |
| 22 | - [{<<"app">>,<<"ecto_sql">>}, |
| 17 | + [[{<<"app">>,<<"ecto_sql">>}, |
| 23 18 | {<<"name">>,<<"ecto_sql">>}, |
| 24 19 | {<<"optional">>,false}, |
| 25 20 | {<<"repository">>,<<"hexpm">>}, |
| 26 | - {<<"requirement">>,<<"~> 3.7.2">>}], |
| 21 | + {<<"requirement">>,<<"~> 3.8">>}], |
| 27 22 | [{<<"app">>,<<"postgrex">>}, |
| 28 23 | {<<"name">>,<<"postgrex">>}, |
| 29 24 | {<<"optional">>,false}, |
| 30 25 | {<<"repository">>,<<"hexpm">>}, |
| 31 | - {<<"requirement">>,<<"~> 0.16.2">>}]]}. |
| 32 | - {<<"version">>,<<"0.0.6">>}. |
| 26 | + {<<"requirement">>,<<"~> 0.16.3">>}], |
| 27 | + [{<<"app">>,<<"ecto_enum">>}, |
| 28 | + {<<"name">>,<<"ecto_enum">>}, |
| 29 | + {<<"optional">>,false}, |
| 30 | + {<<"repository">>,<<"hexpm">>}, |
| 31 | + {<<"requirement">>,<<"~> 1.4">>}]]}. |
| 32 | + {<<"version">>,<<"0.0.7">>}. |
| @@ -1,6 +1,6 @@ | |
| 1 1 | defmodule MishkaDeveloperTools.MixProject do |
| 2 2 | use Mix.Project |
| 3 | - @version "0.0.6" |
| 3 | + @version "0.0.7" |
| 4 4 | |
| 5 5 | def project do |
| 6 6 | [ |
| @@ -29,10 +29,9 @@ defmodule MishkaDeveloperTools.MixProject do | |
| 29 29 | # Run "mix help deps" to learn about dependencies. |
| 30 30 | defp deps do |
| 31 31 | [ |
| 32 | - {:ecto, "~> 3.7"}, |
| 33 | - {:ecto_sql, "~> 3.7.2"}, |
| 34 | - {:postgrex, "~> 0.16.2"}, |
| 35 | - |
| 32 | + {:ecto_sql, "~> 3.8"}, |
| 33 | + {:postgrex, "~> 0.16.3"}, |
| 34 | + {:ecto_enum, "~> 1.4"}, |
| 36 35 | # Dev dependencies |
| 37 36 | {:ex_doc, "~> 0.26", only: :dev, runtime: false} |
| 38 37 | ] |