কীভাবে সুইফট এবং বাষ্পের সাথে গ্রাফকিউএল সার্ভার তৈরি করা যায়

গ্রাফকিউএল ফেসবুক দ্বারা বিকাশিত তবে 2015 সালে উন্মুক্ত উত্সের জন্য একটি কোয়েরি ভাষা RE এটি আরইএসটি-ভিত্তিক এপিআইয়ের একটি বিকল্প কারণ এটি ক্লায়েন্টদের প্রতিটি শেষ পয়েন্টে কোন ডেটা সরবরাহ করা হবে তা সিদ্ধান্ত নেওয়ার পরিবর্তে সার্ভারের সামনে কী ডেটা প্রয়োজন তা সিদ্ধান্ত নিতে দেয়। এটি ডেটা অনুসন্ধানের একটি আধুনিক উপায়, উদাহরণস্বরূপ, গিটহাব বা শপাইফের মতো ফেসবুকের পাশের কিছু বড় সংস্থাগুলি সুবিধাগুলি দেখেছেন এবং গ্রাফকিউএল দিয়ে তাদের এপিআই প্রয়োগ করেছেন।

আপনি যদি গ্রাফকিউএল সম্পর্কে আরও জানতে চান তবে তাদের ওয়েবসাইটটি দেখুন। তারা শুরু করার জন্য দুর্দান্ত নিবন্ধ এবং টিউটোরিয়াল সরবরাহ করে।

এই নিবন্ধের শেষে, আমাদের একটি চলমান গ্রাফিক্যুয়াল সার্ভার থাকবে যা আমরা ওয়েব-ভিত্তিক গ্রাফিক্যুয়াল ক্যোয়ারী সরঞ্জাম গ্রাফিক্যুয়েল এর মাধ্যমে পৌঁছাতে পারি। উদাহরণ হিসাবে, আমরা একটি টুডো অ্যাপ্লিকেশন ব্যবহার করি। আমরা নতুন টোডো তৈরি করতে যাচ্ছি, সমস্ত বিদ্যমান একবারে তালিকাবদ্ধ করব এবং টডসও মুছব।

আপনার যদি ইতিমধ্যে বাষ্পের সাথে কিছু অভিজ্ঞতা থাকে এবং এর আগে একটি নতুন অ্যাপ্লিকেশন তৈরি করে ফেলেছেন, আপনি এই নিবন্ধে প্রতিটি নতুন বাষ্পের অ্যাপ্লিকেশন সহ টোডো টেম্পলেটটি চিনবেন। আমরা গ্রাফকিউএল সহ একই কার্যকারিতা তৈরি করতে যাচ্ছি।

শুরু হচ্ছে

আসুন একটি নতুন বাষ্প প্রকল্প তৈরি করে শুরু করি। এটি করার সহজতম উপায়টি হ'ল টুলবক্সটি ব্যবহার করে যা বাষ্পের নতুন গ্রাফকিউএল-টোডো সরবরাহ করে। এটি বাষ্পের জন্য কিছু ডিফল্ট কনফিগারেশন সহ একটি নতুন সুইফ্ট প্যাকেজ ম্যানেজার অ্যাপ্লিকেশন তৈরি করে। আমরা এটির উপরে আমাদের গ্রাফকিউএল সার্ভারটি তৈরি করতে একটি বেস হিসাবে ব্যবহার করব।

প্রথমত, আমাদের আমাদের প্যাকেজ.সুইফ্ট ফাইলটি পরিবর্তন করতে হবে এবং নতুন নির্ভরতা যুক্ত করতে হবে। গ্রাফকিউলকিট প্যাকেজটি বাষ্পের সাথে তাদের ব্যবহার সহজ করার জন্য মূল ফাংশনগুলির চারপাশে একটি পাতলা মোড়ক সরবরাহ করে। এটি স্বয়ংক্রিয়ভাবে গ্রাফকিউল সহ গ্রাফিতির জন্য গ্রাফকিউএল বাস্তবায়নও অন্তর্ভুক্ত করে। গ্রাফিকু কিকিট আমদানি হিসাবে আমাদের সরাসরি উভয় প্যাকেজ আমদানি করার দরকার নেই এবং সেগুলি স্বয়ংক্রিয়ভাবে প্রকাশ করে। দ্বিতীয় নতুন নির্ভরতা alচ্ছিক তবে গ্রাফিক্যুয়াল ওয়েব পেজ সরবরাহ করে যা আমরা আমাদের ওয়েব সার্ভার থেকে পরিবেশন করতে পারি যা আমাদের গ্রাফিক্যুয়াল সার্ভারের বিরুদ্ধে কোয়েরি প্রেরণের জন্য আইডিই -র মতো ইন্টারফেস হিসাবে দেয়।

ডাটাবেস মডেল

আমরা বিদ্যমান টোডো ডাটাবেস মডেলটি ব্যবহার করব যা টেমপ্লেট সরবরাহ করে। গ্রাফকিউএল সমর্থন করতে এখানে কিছুই পরিবর্তন করার দরকার নেই:

ব্যবসায় যুক্তি

আরআরএসটি টেমপ্লেটটি নিম্নলিখিত 3 টি শেষ পয়েন্ট সরবরাহ করে:

  • একটি তালিকা হিসাবে সমস্ত টডস পান
  • ক্যোয়ারী ইনপুটটির উপর ভিত্তি করে একটি নতুন টুডো তৈরি করুন
  • টু শনাক্তকারীর উপর ভিত্তি করে একটি বিদ্যমান টুডো মুছুন।

আমরা গ্রাফকিউএলে একই সমাপ্তিগুলি পুনরায় তৈরি করব। অতএব আমরা টোডোএপিআই নামে একটি শ্রেণি তৈরি করি যা শেষ পয়েন্টগুলির জন্য ব্যবসায় এবং ডাটাবেস যুক্তি ধারণ করে। এটি আমাদের যুক্তির একটি দুর্দান্ত বিমূর্ততা দেয়।

প্রথমে, আমরা ফাংশনটি লিখব যা ডাটাবেসে সঞ্চিত সমস্ত টোডোগুলি প্রদান করে।

আমাদের getThis ফাংশন আছে। এটি একটি অনুরোধ অবজেক্ট নেয় এবং এটিকে পরবর্তী গ্রাফকিউএল কার্যকারিতা অনুসারে তৈরি করতে আমরা NoArguments প্রকারের একটি যুক্তিও গ্রহণ করি। এই ধরণের গ্রাফিটি প্যাকেজটির সাথে আসে এবং এটি খালি কাঠামোর জন্য একটি টাইপালিয়াস। আমরা পরবর্তী APIগুলিতে কীভাবে অন্যান্য ধরণের আর্গুমেন্ট ব্যবহার করতে পারি তা আবিষ্কার করব। এই ফাংশনটির বাকি অংশগুলি সাধারণ বাষ্প সম্পর্কিত কোড। এই ফাংশনটি টোডো অবজেক্টগুলির একটি অ্যারের সাথে ভবিষ্যত ফেরায়। ফাংশন বডিটিতে আমরা ফ্লুয়েন্টের সাথে করা ক্যোয়ারী ধারণ করে। এবং কারণ আমাদের কাছে একটি অনুরোধ অবজেক্টটি একটি ফাংশন প্যারামিটার হিসাবে দেওয়া হয়েছে তাই আমরা এটি আমাদের ডাটাবেস ক্যোয়ারির জন্য ইভেন্ট লুপ হিসাবে ব্যবহার করতে পারি।

সুইফ্ট 5.1 যেহেতু আমরা এখানে রিটার্ন কীওয়ার্ডটি বাদ দিতে পারি কারণ ফাংশনটি কেবল একটি একক-লাইন বিবৃতি নিয়ে গঠিত।

একটি নতুন টুডো তৈরি করতে আমরা এখন একটি স্পষ্ট যুক্তি প্রকারটি ব্যবহার শুরু করি। আমরা কেবল একটি শিরোনামের উপর ভিত্তি করে একটি নতুন টুডো তৈরি করতে সক্ষম হতে চাই। গ্রাফকিউএল বাস্তবায়ন দিয়ে এই কাজটি করার জন্য আমরা একটি নতুন কাঠামো তৈরি করি যা কোডডের সাথে সঙ্গতিপূর্ণ হয় এবং আমরা যে সমস্ত পরামিতি গ্রহণ করতে চাই তা যুক্ত করি (এক্ষেত্রে কেবল শিরোনাম বৈশিষ্ট্য তবে এই তালিকাটি দীর্ঘতর হতে পারে)। ফাংশনে, আমরা এই ক্রিয়েটটোডোআরগমেন্টস টাইপটি আমাদের পূর্ববর্তী ফাংশন থেকে নোআরগমেন্টস টাইপের পরিবর্তে দ্বিতীয় যুক্তি হিসাবে প্রত্যাশা করি। তারপরে আমরা পাস করা শিরোনাম আর্গুমেন্টের সাথে আমাদের টডো অবজেক্টটি আরম্ভ করব এবং আমাদের অনুরোধ অবজেক্টটি ব্যবহার করে এটি ডাটাবেসে সংরক্ষণ করি।

অবশেষে, আমরা তাদের সনাক্তকারীর উপর ভিত্তি করে বিদ্যমান টডসও মুছতে চাই। আমরা সম্পত্তি আইডির সাথে মুছে ফেলা টিডোআরগমেন্টস নামে এই ফাংশনটির জন্য আর্গুমেন্ট স্ট্রাক্ট তৈরি করি। ডিলিটটোডো ফাংশনটি দ্বিতীয় যুক্তি হিসাবে এই ধরণের প্রত্যাশা করে। এই ফাংশনটি মুছে ফেলা সফল হয়েছিল তা বোঝাতে বুল টাইপের ভবিষ্যত দেয়। টুডু মুছতে আমরা ফ্লুয়েন্টস কার্যকারিতা ব্যবহার করি। প্রথমে আমরা প্রদত্ত আইডি দিয়ে টডো অনুসন্ধান করি search যদি কিছু না পাওয়া যায় তবে আমরা একটি। নোটফান্ড ত্রুটি ছুঁড়ে ফেলি যার ফলস্বরূপ শেষ পয়েন্টে একটি পাওয়া যায়নি স্থিতি বার্তার ফলাফল। তারপরে আমরা সেই টুডু মোছা করি এবং এটি যদি কোনও ত্রুটি না ফেলে তবে আমরা ফলাফলটিকে সত্যের বুলিয়ান মানতে রূপান্তর করি যা সফলভাবে মুছে ফেলার অগ্রগতি নির্দেশ করে।

মাঠের নাম

আমরা যখন আমাদের গ্রাফকিউএল স্কিমে টোডো টাইপটি প্রকাশ করতে চাই তখন আমাদের প্রতিটি সম্পত্তির জন্য নাম নির্ধারণ করতে হবে। বেশিরভাগ ক্ষেত্রে, এই নামগুলি কাঠামোর বৈশিষ্ট্যগুলির নামের সাথে মিলবে। গ্রাফিটি ফিল্ডকিপ্রোভাইডার প্রোটোকলটি প্রবর্তন করে। আমাদের টোডো ক্লাসটিকে এই প্রোটোকলের সাথে সামঞ্জস্য করে আমরা একটি নতুন এনামও তৈরি করি যা স্ট্রিং টাইপ দ্বারা প্রতিনিধিত্ব করা যায়। এই এনামটিতে আমরা আমাদের সার্বজনীন এপিআইতে প্রকাশ করতে চাইছি এমন প্রতিটি বৈশিষ্ট্যের ক্ষেত্রে কেস রয়েছে। এটি আমাদের উদাহরণস্বরূপ গণিত মান রাখতে সক্ষম করে।

টডোএপিআইয়ের জন্য আমাদের একই কাজ করা উচিত। প্রতিটি শেষ বিন্দু এবং যুক্তি একটি এনামে একটি কেস প্রয়োজন যা পরে জন্য সাধারণ পাঠ্যের নাম উপস্থাপন করে।

গ্রাফকিউএল স্কিমা

আমাদের গ্রাফকিউএল স্কিমাটি কেবল এখনও অনুপস্থিত। এটি যে সকল ধরণের আমরা প্রকাশ করতে চাই এবং শেষ পয়েন্টগুলি বলা যেতে পারে তার একটি কাঠামো। এন্ডপয়েন্টগুলি আনার শেষ পয়েন্টগুলিতে বিভক্ত হয় যা কোয়েরি এবং মিউটটেবল এন্ডপয়েন্টগুলি হিসাবে শ্রেণিবদ্ধ করা হয় যা ডেটা সংশোধন করতে পারে এবং রূপান্তর হিসাবে গোষ্ঠীযুক্ত হয়।

আপনি যদি প্রশ্ন এবং মিউটেশন সম্পর্কে আরও জানতে চান তবে আমি অফিশিয়াল গ্রাফকিউএল ডকুমেন্টেশনের প্রস্তাব দিই।

আমাদের টুডো উদাহরণের জন্য, আমাদের টোডো ক্লাসটি সংজ্ঞায়িত করতে হবে, নতুন টোডো তৈরি করতে সমস্ত টোডস এবং দুটি মিউটেশন পেতে এবং বিদ্যমানটি একবারে মুছে ফেলার জন্য ক্যোয়ারী তৈরি করতে হবে। স্কিমা টাইপ দুটি জেনেরিকের উপর ভিত্তি করে। একটি হ'ল সেই এপিআই যা আমরা টোডোএপিআই হিসাবে তৈরি করেছি এবং একটি প্রসঙ্গ যা আমাদের আবেদনের অনুরোধ অবজেক্ট।

সংকলক প্রদত্ত সুইফ্ট শ্রেণি থেকে আমাদের টোডো টাইপের সমস্ত ক্ষেত্রকে কেন অনুমান করতে পারে না? এটি কারণ আমাদের অন্যান্য সংখ্যার উত্স বা ফাংশনগুলি থেকে আসে যা বৈশিষ্ট্য হিসাবে কাজ করে এবং প্রকারগুলিতে যুক্তও করা যেতে পারে comp

বাষ্প রাউটারে স্কিমা নিবন্ধন করুন

আমাদের গ্রাফকিউএল স্কিমাটিকে একটি রিস্টের শেষ পয়েন্ট হিসাবে পরিবেশন করতে আমরা গ্রাফকিউলকিট ফাংশনগুলি সহজেই স্ক্রিনাকে আমাদের রাউটারে টডোএপিআইয়ের উদাহরণ সহ একসাথে নিবন্ধিত করতে ব্যবহার করি। এটি যা করে তা হ'ল গ্রাফিক / এ জিইটি এবং একটি পোস্টের শেষ পয়েন্ট তৈরি করা। এটি একটি REST- ভিত্তিক গ্রাফকিউএল সার্ভারের জন্য ডিফল্ট পাথ। আমরা একটি বিকাশের পরিবেশে থাকাকালীন গ্রিফকিউএল ওয়েব পৃষ্ঠাটি বিল্ট-ইন আইডিই-এর মতো শেষ পয়েন্ট সহ সহজেই আমাদের অ্যাপ্লিকেশনটি ডিবাগ করতে সক্ষম করি।

আমাদের এপিআই পরীক্ষা করছে

আমরা এখন বাষ্প অ্যাপ্লিকেশন চালাতে পারি এবং তারপরে http: // লোকালহোস্ট: 8080 দেখতে পারি। আমরা একটি ড্যাশবোর্ড দেখতে পাব যেখানে আমরা বাম দিকে কোয়েরি সন্নিবেশ করতে এবং মাঝখানে ফলাফল দেখতে পারি। ডানদিকে, আমরা আমাদের এপিআইয়ের একটি ডকুমেন্টেশন খুঁজে পেতে পারি যা আমরা আমাদের স্কিমা অবজেক্টের সাথে প্রকাশ করেছি।

এখানে আমরা আমাদের এপিআইতে পাঠাতে পারি এমন প্রশ্নের কয়েকটি উদাহরণ রয়েছে এবং ফলাফলগুলি প্রত্যাশা করতে হবে:

উপসংহার

গ্রাফকিউএল একটি দুর্দান্ত ক্যোয়ারী ভাষা যা সুইফট এবং দুর্দান্ত বাস্তুতন্ত্রের বাষ্প সরবরাহ করে। ওয়েবসকেট সহ সাবস্ক্রিপশনের মতো কিছু কার্যকারিতা এখনও কার্যকর করা হয়নি তবে এটি সম্ভবত ভবিষ্যতেও আসবে।

এই উদাহরণটি গ্রাফকিউএল-এর ডেটা অনুসন্ধানের নমনীয়তার সাথে মিলিয়ে টাইপ-সেফ সিনট্যাক্স সুইফট সরবরাহ করে। এই নিবন্ধে আপনি যে সমস্ত কোড দেখেছেন তা আমার তৈরি একটি গিটহাব প্রকল্পে পাওয়া যাবে। এই প্রকল্পটি নতুন অ্যাপ্লিকেশনগুলির জন্য একইভাবে বাষ্পের এপিআই টেমপ্লেট ব্যবহার করা যেতে পারে।

গ্রাফকিউএল এবং সার্ভার সাইড সুইফ্ট নিয়ে আপনার কী অভিজ্ঞতা আছে? কোন অঞ্চলে আপনি মনে করেন সম্প্রদায়টি সুইফটে গ্রাফকিউএল অ্যাপ্লিকেশন তৈরি করার আরও ভাল অভিজ্ঞতা সরবরাহ করতে সহায়তা করতে পারে? মন্তব্যগুলিতে, টুইটারে বা ইমেলের মাধ্যমে আপনার মতামত সম্পর্কে আমাকে জানান।