গ্রাফকিউএল (GraphQL)-এ Filtering এবং Sorting ডেটা ম্যানেজমেন্টের গুরুত্বপূর্ণ অংশ, যা ডেটা সহজে এবং দ্রুত কার্যকরভাবে প্রক্রিয়া এবং বিশ্লেষণ করতে সহায়ক। Filtering এবং Sorting এর মাধ্যমে আপনি ডেটা বেছে নিতে এবং সাজাতে সক্ষম হন, যা কার্যকরভাবে ডেটার প্রক্রিয়াকরণে সহায়ক। এই ধারণাগুলি মূলত Query স্তরে ব্যবহৃত হয়, যাতে ডেটার নির্দিষ্ট অংশ বা একে সাজানো যায়।
Filtering (ফিল্টারিং)
Filtering হল ডেটা থেকে কিছু নির্দিষ্ট মান বের করার প্রক্রিয়া, যেমন একটি নির্দিষ্ট তারিখ, নাম বা মানের সীমা ভিত্তিক ডেটা নির্বাচন করা। GraphQL-এ আপনি বিভিন্ন ফিল্ডের মাধ্যমে ডেটাকে filter করতে পারেন।
Filtering উদাহরণ
ধরা যাক, আমাদের একটি Post টাইপ আছে, এবং আমরা title অথবা date অনুযায়ী ডেটা ফিল্টার করতে চাই। আমাদের স্কিমা এমন হতে পারে:
type Post {
id: ID!
title: String!
content: String!
date: String!
}
type Query {
posts(filter: PostFilter): [Post]
}
input PostFilter {
title: String
date: String
}
এখানে, আমরা একটি PostFilter ইনপুট টাইপ তৈরি করেছি, যা title এবং date ফিল্টার হিসেবে ব্যবহার করা যাবে।
Filtering কুয়েরি
এখন, আপনি posts কুয়েরির মাধ্যমে ফিল্টার করা ডেটা চেয়ে নিতে পারেন। যেমন:
query {
posts(filter: { title: "GraphQL", date: "2024-01-01" }) {
id
title
content
date
}
}
এখানে:
- title: আমরা
titleএর মধ্যে "GraphQL" শব্দের পোস্ট চাচ্ছি। - date: আমরা "2024-01-01" তারিখের পোস্টগুলি চাচ্ছি।
এটি শুধুমাত্র সেই পোস্টগুলি ফেরত আনবে যেগুলির শিরোনাম "GraphQL" এবং তারিখ "2024-01-01"।
Sorting (সাজানো)
Sorting হল ডেটা একটি নির্দিষ্ট অর্ডারে সাজানোর প্রক্রিয়া। আপনি ডেটা সময়, নাম, সংখ্যা, বা অন্য কোনো মানের ভিত্তিতে সাজাতে পারেন। GraphQL-এ, আপনি ফিল্টারিংয়ের পাশাপাশি ডেটা sort করতে পারেন, যেমন ascending বা descending অর্ডারে সাজানো।
Sorting উদাহরণ
ধরা যাক, আমাদের Post টাইপের date অনুযায়ী ডেটা সাজানোর প্রয়োজন। আমরা স্কিমায় একটি নতুন ইনপুট টাইপ যোগ করব যা sort এর নির্দেশনা দেবে।
enum SortOrder {
ASC
DESC
}
input PostSort {
field: String!
order: SortOrder!
}
type Query {
posts(filter: PostFilter, sort: PostSort): [Post]
}
এখানে:
- SortOrder: এটি একটি enum যা ASC (Ascending) এবং DESC (Descending) মান গ্রহণ করবে।
- PostSort: এটি
field(যেমনdateবাtitle) এবংorder(যেমন ASC বা DESC) গ্রহণ করে।
Sorting কুয়েরি
এখন, আপনি posts কুয়েরির মাধ্যমে ডেটা সাজাতে পারবেন। যেমন:
query {
posts(sort: { field: "date", order: ASC }) {
id
title
content
date
}
}
এখানে:
- field: আমরা
dateফিল্ড অনুযায়ী সাজাতে চাচ্ছি। - order: আমরা সাজাতে চাচ্ছি ascending অর্ডারে (অর্থাৎ পুরানো পোস্ট প্রথমে আসবে)।
এই কুয়েরি পুরানো পোস্টগুলো প্রথমে সাজিয়ে দেখাবে।
Filtering এবং Sorting একসাথে ব্যবহার
এখন, আপনি একই কুয়েরিতে Filtering এবং Sorting একসাথে ব্যবহার করতে পারেন। যেমন, আপনি যদি title অনুযায়ী ফিল্টার করতে চান এবং date অনুযায়ী সাজাতে চান, তাহলে কুয়েরি এইভাবে দেখতে হবে:
query {
posts(filter: { title: "GraphQL" }, sort: { field: "date", order: DESC }) {
id
title
content
date
}
}
এখানে:
- filter: আমরা title "GraphQL" এর পোস্টগুলি ফিল্টার করতে চাচ্ছি।
- sort: আমরা date অনুযায়ী descending অর্ডারে সাজাতে চাই, যাতে নতুন পোস্টগুলো প্রথমে আসে।
Server-Side Filtering and Sorting
গ্রাফকিউএল-এর Filtering এবং Sorting এর জন্য সঠিক রেজোলভার তৈরি করা গুরুত্বপূর্ণ। এটি সাধারণত সার্ভারে query parameters হিসেবে filter এবং sort গ্রহণ করে এবং ডেটাবেসে বা ডেটা সোর্সে এই শর্ত অনুযায়ী ডেটা রিটার্ন করে।
নিচে একটি সাধারণ রেজোলভার উদাহরণ দেওয়া হলো যা filter এবং sort ব্যবহার করে ডেটা ফেরত আনে:
const resolvers = {
Query: {
posts: (parent, { filter, sort }, context, info) => {
let posts = [
{ id: "1", title: "GraphQL Basics", content: "Learn GraphQL", date: "2024-01-01" },
{ id: "2", title: "Advanced GraphQL", content: "Master GraphQL", date: "2024-02-01" },
// আরো পোস্ট
];
// Filtering
if (filter) {
if (filter.title) {
posts = posts.filter(post => post.title.includes(filter.title));
}
if (filter.date) {
posts = posts.filter(post => post.date === filter.date);
}
}
// Sorting
if (sort) {
posts = posts.sort((a, b) => {
if (sort.field === "date") {
if (sort.order === "ASC") {
return new Date(a.date) - new Date(b.date);
} else {
return new Date(b.date) - new Date(a.date);
}
}
return 0;
});
}
return posts;
}
}
};
এখানে:
- Filtering: প্রথমে filter চেক করা হয়, এবং তারপর title এবং date এর উপর ফিল্টার প্রযোজ্য করা হয়।
- Sorting: এরপর, sort চেক করা হয় এবং date অনুযায়ী সাজানো হয় ASC বা DESC অর্ডারে।
সারাংশ
Filtering এবং Sorting গ্রাফকিউএল-এ ডেটা ম্যানেজমেন্টের গুরুত্বপূর্ণ উপাদান। Filtering ডেটাকে নির্দিষ্ট মানের ভিত্তিতে চয়ন করতে সাহায্য করে, এবং Sorting ডেটাকে একটি নির্দিষ্ট অর্ডারে সাজানোর সুযোগ দেয়। আপনি এই দুটি কার্যকলাপ একসাথে ব্যবহার করতে পারেন, এবং সার্ভার সাইডে রেজোলভার ব্যবহার করে ডেটা প্রক্রিয়া করে সঠিক ফলাফল পেতে পারেন। GraphQL-এ filter এবং sort ব্যবহার করে আপনি দ্রুত এবং কার্যকরভাবে ডেটা ম্যানেজ করতে পারবেন।
Read more