Elixir Language
Ecto
खोज…
एक अमृत कार्यक्रम में एक Ecto.Repo जोड़ना
यह 3 चरणों में किया जा सकता है:
आपको एक अमृत मॉड्यूल को परिभाषित करना होगा जो Ecto.Repo का उपयोग करता है और एक otp_app के रूप में आपके ऐप को पंजीकृत करता है।
defmodule Repo do use Ecto.Repo, otp_app: :custom_app end
आपको रेपो के लिए कुछ कॉन्फिगर को भी परिभाषित करना होगा जो आपको डेटाबेस से जुड़ने की अनुमति देगा। यहाँ पोस्टग्रेज के साथ एक उदाहरण दिया गया है।
config :custom_app, Repo, adapter: Ecto.Adapters.Postgres, database: "ecto_custom_dev", username: "postgres_dev", password: "postgres_dev", hostname: "localhost", # OR use a URL to connect instead url: "postgres://postgres_dev:postgres_dev@localhost/ecto_custom_dev"
अपने आवेदन में एक्टो का उपयोग करने से पहले, आपको यह सुनिश्चित करने की आवश्यकता है कि एक्टो आपके ऐप के शुरू होने से पहले शुरू हो। यह एक पर्यवेक्षक के रूप में lib / custom_app.ex में Ecto को पंजीकृत करने के साथ किया जा सकता है।
def start(_type, _args) do import Supervisor.Spec children = [ supervisor(Repo, []) ] opts = [strategy: :one_for_one, name: MyApp.Supervisor] Supervisor.start_link(children, opts) end
Repo.get_by / 3 में "और" खंड
यदि आपके पास Ecto.Queryable है, जिसका नाम पोस्ट है, जिसका शीर्षक और विवरण है।
आप पोस्ट को शीर्षक के साथ ला सकते हैं: "हैलो" और विवरण: "विश्व" प्रदर्शन करके:
MyRepo.get_by(Post, [title: "hello", description: "world"])
यह सब संभव है क्योंकि Repo.get_by दूसरे तर्क में एक कीवर्ड सूची की अपेक्षा करता है।
गतिशील क्षेत्रों के साथ क्वेरी
किसी फ़ील्ड को नाम देने के लिए जिसे एक चर में शामिल किया गया है, फ़ील्ड फ़ंक्शन का उपयोग करें।
some_field = :id
some_value = 10
from p in Post, where: field(p, ^some_field) == ^some_value
माइग्रेशन और स्कीमा में कस्टम डेटा प्रकार जोड़ें
नीचे दिया गया उदाहरण एक एनरमिटेड प्रकार को पोस्टग्रेज डेटाबेस में जोड़ता है।
सबसे पहले, माइग्रेशन फ़ाइल संपादित करें ( mix ecto.gen.migration
के साथ बनाई गई):
def up do
# creating the enumerated type
execute("CREATE TYPE post_status AS ENUM ('published', 'editing')")
# creating a table with the column
create table(:posts) do
add :post_status, :post_status, null: false
end
end
def down do
drop table(:posts)
execute("DROP TYPE post_status")
end
दूसरा, मॉडल फ़ाइल में या तो एक अमृत प्रकार के साथ एक फ़ील्ड जोड़ें:
schema "posts" do
field :post_status, :string
end
या Ecto.Type
व्यवहार को लागू करें।
उत्तरार्द्ध के लिए एक अच्छा उदाहरण ecto_enum
पैकेज है और इसका उपयोग टेम्पलेट के रूप में किया जा सकता है। इसका उपयोग इसके जीथूब पेज पर अच्छी तरह से प्रलेखित है।
यह प्रतिबद्ध एक फीनिक्स परियोजना में enum_ecto को परियोजना से जोड़ने और दृश्य और मॉडल में प्रगणित प्रकार का उपयोग करने में एक उदाहरण उपयोग दिखाता है।