গ্রাফকিউএল (GraphQL)-এ Built-in Directives দুটি খুবই গুরুত্বপূর্ণ ফিচার, যা ক্লায়েন্টকে কুয়েরি থেকে ডেটা অন্তর্ভুক্ত বা বাদ দেওয়ার সুযোগ দেয়। এই দুটি ডিরেকটিভ হলো @include এবং @skip। এগুলি কুয়েরির সময় নির্দিষ্ট শর্তের উপর ভিত্তি করে কিভাবে ডেটা ফিল্টার করা হবে তা নিয়ন্ত্রণ করতে সাহায্য করে।
@include Directive
@include ডিরেকটিভটি গ্রাফকিউএল কুয়েরিতে ব্যবহার করা হয় যাতে কেবল তখনই একটি ফিল্ডকে অন্তর্ভুক্ত (include) করা হয় যখন নির্দিষ্ট একটি শর্ত পূর্ণ হয়। এটি সাধারণত একটি বুলিয়ান (Boolean) শর্তের সাথে ব্যবহার করা হয়, এবং সেই শর্তের ভিত্তিতে একটি ফিল্ডের উপস্থিতি নির্ধারণ করা হয়।
ব্যবহার:
query GetUserDetails($includeEmail: Boolean!) {
user(id: "1") {
name
email @include(if: $includeEmail)
}
}
এখানে:
$includeEmailএকটি ভেরিয়েবল যা ডায়নামিকভাবে কুয়েরি চলাকালীন নির্ধারণ করা হয়।@include(if: $includeEmail)ডিরেকটিভটি শুধুমাত্র তখনই email ফিল্ডটি অন্তর্ভুক্ত করবে যখন $includeEmail ভেরিয়েবলটিtrueহবে।
কুয়েরি:
query {
user(id: "1") {
name
email @include(if: true)
}
}
এখানে:
emailফিল্ডটি include হবে যদি শর্তtrueহয়।- যদি
@include(if: false)হয়, তবেemailফিল্ডটি অন্তর্ভুক্ত হবে না।
@skip Directive
@skip ডিরেকটিভটি @include এর বিপরীত। এটি ব্যবহার করা হয় যাতে কোনো ফিল্ড তখনই বাতিল (skip) করা হয় যখন নির্দিষ্ট শর্ত পূর্ণ হয়। এটি একটি বুলিয়ান শর্তের উপর ভিত্তি করে কাজ করে, এবং সেই শর্তের ভিত্তিতে ফিল্ডটি কুয়েরি থেকে বাদ দেওয়া হয়।
ব্যবহার:
query GetUserDetails($skipEmail: Boolean!) {
user(id: "1") {
name
email @skip(if: $skipEmail)
}
}
এখানে:
$skipEmailএকটি ভেরিয়েবল যা কুয়েরি চলাকালীন নির্ধারণ করা হয়।@skip(if: $skipEmail)ডিরেকটিভটি email ফিল্ডটিকে তখনই বাদ দেবে যখন $skipEmail ভেরিয়েবলটিtrueহবে।
কুয়েরি:
query {
user(id: "1") {
name
email @skip(if: true)
}
}
এখানে:
emailফিল্ডটি skip হবে যদি শর্তtrueহয়।- যদি
@skip(if: false)হয়, তবেemailফিল্ডটি অন্তর্ভুক্ত হবে।
@include এবং @skip এর মধ্যে পার্থক্য
- @include ডিরেকটিভটি একটি ফিল্ডকে কেবল তখনই অন্তর্ভুক্ত করতে দেয় যখন একটি শর্ত
trueথাকে। - @skip ডিরেকটিভটি একটি ফিল্ডকে কেবল তখনই বাদ দিতে দেয় যখন একটি শর্ত
trueথাকে।
এগুলো একসাথে ব্যবহার করার মাধ্যমে, আপনি একই কুয়েরিতে যেকোনো ডেটাকে শর্ত অনুযায়ী অন্তর্ভুক্ত বা বাদ দিতে পারেন।
উদাহরণ:
ধরা যাক, আপনি একটি User কুয়েরি তৈরি করতে চান যা নাম এবং ইমেইল অন্তর্ভুক্ত করবে, তবে আপনি একটি শর্ত দেবেন যে যদি ক্লায়েন্ট ফোন নম্বর চায়, তবে ফোন নম্বর অন্তর্ভুক্ত হবে, আর অন্যথায় বাদ যাবে।
query GetUserDetails($includePhone: Boolean!) {
user(id: "1") {
name
email
phone @include(if: $includePhone)
}
}
এখানে:
phoneফিল্ডটি তখনই অন্তর্ভুক্ত হবে যখন$includePhoneভেরিয়েবলটিtrueহবে, আর বাদ যাবে যখন তাfalseহবে।
কুয়েরি (True):
query {
user(id: "1") {
name
email
phone @include(if: true)
}
}
এখানে ফোন নম্বর অন্তর্ভুক্ত হবে।
কুয়েরি (False):
query {
user(id: "1") {
name
email
phone @include(if: false)
}
}
এখানে ফোন নম্বর বাদ যাবে এবং শুধুমাত্র নাম এবং ইমেইল ফিরে আসবে।
সারাংশ
গ্রাফকিউএল-এর @include এবং @skip ডিরেকটিভ দুটি খুবই শক্তিশালী টুল যা ডেটা কুয়েরির ফ্লেক্সিবিলিটি এবং পারফরম্যান্স উন্নত করতে সাহায্য করে। এই ডিরেকটিভগুলির মাধ্যমে আপনি ডেটাকে শর্তাধীনভাবে অন্তর্ভুক্ত বা বাদ দিতে পারেন, যা অ্যাপ্লিকেশনের কার্যকারিতা এবং ইউজার এক্সপেরিয়েন্সে উল্লেখযোগ্য উন্নতি করতে সহায়ক।
Read more