গ্রাফকিউএল (GraphQL) এ Aliases, Fragments, এবং Directives হল এমন শক্তিশালী ফিচার যা ডেভেলপারদের কুয়েরি আরও নমনীয়, পুনরায় ব্যবহারযোগ্য এবং কার্যকরী করতে সাহায্য করে। এগুলো কুয়েরি লেখার সময় বিভিন্ন ধরনের সমস্যা সমাধানে সহায়ক হতে পারে এবং ডেটার মানিয়ে নেয়ার প্রক্রিয়া সহজ করে।
Aliases (এলিয়াস)
Aliases হল একটি ফিচার যা একই রিসোর্স বা ফিল্ডকে একাধিকবার কুয়েরিতে ব্যবহার করার অনুমতি দেয়, যেখানে প্রতিটি ফিল্ডের জন্য আলাদা নাম সেট করা হয়। এর মাধ্যমে এক কুয়েরিতে একাধিক ভিন্ন নাম সহ একই ধরনের ডেটা পাওয়া সম্ভব।
কেন Aliases ব্যবহার করবেন?
ধরা যাক, আপনি একটি API থেকে ইউজারের তথ্য এবং সেই ইউজারের পোষ্টস দুইটি আলাদা আলাদা ভ্যালু চান। যদি আপনি একই ফিল্ড দুইবার লিখতে চান তবে আলাদা নাম দিতে হবে, আর এভাবেই Aliases সাহায্য করবে।
উদাহরণ:
{
user1: user(id: 1) {
name
email
}
user2: user(id: 2) {
name
email
}
}
এখানে, user1 এবং user2 হল আলাদা আলাদা এলিয়াস নাম। এই কুয়েরির মাধ্যমে দুটি আলাদা ইউজারের তথ্য একসাথে পাবেন, যেখানে প্রতিটি ইউজারের জন্য আলাদা নাম ব্যবহৃত হয়েছে।
Fragments (ফ্র্যাগমেন্টস)
Fragments হল কোডের পুনরায় ব্যবহারযোগ্য অংশ যা কুয়েরির মধ্যে একাধিকবার ব্যবহার করা যেতে পারে। ফ্র্যাগমেন্টস সাধারণত কুয়েরির বিভিন্ন অংশে একে অপরের মতো ডেটা চাওয়ার সময় ব্যবহৃত হয়, যাতে কোড কমপ্লেক্স না হয় এবং পুনরায় ব্যবহারযোগ্য হয়।
কেন Fragments ব্যবহার করবেন?
একই ধরনের ডেটা একাধিক স্থানে ব্যবহার করতে হলে, আপনি সেই ডেটার অংশকে ফ্র্যাগমেন্টে লিখে, প্রতিবার সেই ফ্র্যাগমেন্টটি ব্যবহার করতে পারেন। এটি কুয়েরি কমপ্লেক্সিটি কমাতে এবং রিডানড্যান্স (redundancy) দূর করতে সাহায্য করে।
উদাহরণ:
fragment userDetails on User {
name
email
}
{
user1: user(id: 1) {
...userDetails
}
user2: user(id: 2) {
...userDetails
}
}
এখানে, userDetails ফ্র্যাগমেন্টটি দুটি আলাদা ইউজারের জন্য ব্যবহার করা হয়েছে, যাতে কোডের পুনরাবৃত্তি এড়ানো যায়।
Directives (ডিরেকটিভস)
Directives হল বিশেষ নির্দেশনা যা কুয়েরির উপর নির্দিষ্ট কাজ করার জন্য ব্যবহৃত হয়। ডিরেকটিভস কুয়েরির চাওয়া অনুযায়ী ডেটা ফিল্টার করতে বা অপ্টিমাইজ করতে ব্যবহৃত হতে পারে। GraphQL-এ দুটি প্রধান ডিরেকটিভ রয়েছে: @include এবং @skip।
কেন Directives ব্যবহার করবেন?
Directives ডেটা ফিল্টার করার জন্য এবং ডেটার কিছু অংশ অগত্যা নিষ্ক্রিয় বা সক্রিয় করার জন্য ব্যবহৃত হয়। এটি কুয়েরির কার্যকারিতা বাড়ায়, কারণ আপনি শুধু সেই ডেটাই ফেরত পান যা আপনার প্রয়োজন।
উদাহরণ:
@include directive:
@includeডিরেকটিভটি নির্দিষ্ট ফিল্ড বা অংশকে অন্তর্ভুক্ত করার জন্য ব্যবহৃত হয়, যদি একটি শর্ত সত্য থাকে।query getUser($includeEmail: Boolean!) { user(id: 1) { name email @include(if: $includeEmail) } }এখানে,
emailফিল্ডটি কেবল তখনই অন্তর্ভুক্ত হবে যদিincludeEmailপ্যারামিটারটিtrueহয়।@skip directive:
@skipডিরেকটিভটি নির্দিষ্ট ফিল্ড বা অংশকে স্কিপ করার জন্য ব্যবহৃত হয়, যদি একটি শর্ত সত্য থাকে।query getUser($skipEmail: Boolean!) { user(id: 1) { name email @skip(if: $skipEmail) } }এখানে,
emailফিল্ডটি কেবল তখনই স্কিপ হবে যদিskipEmailপ্যারামিটারটিtrueহয়।
সারাংশ
Aliases, Fragments, এবং Directives হল GraphQL-এর শক্তিশালী ফিচার যা কুয়েরি লেখাকে আরও নমনীয়, পুনরায় ব্যবহারযোগ্য এবং কার্যকরী করে। Aliases একই রিসোর্স বা ফিল্ডকে একাধিকবার আলাদা নাম দিয়ে ব্যবহার করার সুবিধা দেয়, Fragments কোড পুনরাবৃত্তি কমায়, এবং Directives ডেটা ফিল্টার বা কাস্টমাইজ করতে সহায়ক হয়। এই সব ফিচার ব্যবহার করে আপনি আরও দক্ষভাবে এবং সুষ্ঠুভাবে ডেটা অনুরোধ করতে পারবেন।
Read more