Current section

19 Versions

Jump to

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 ]