GraphQL এ Mutation হল একটি বিশেষ ধরনের অপারেশন যা ডেটাকে পরিবর্তন বা আপডেট করতে ব্যবহৃত হয়। এটি Query থেকে আলাদা, কারণ Query কেবল ডেটা পড়তে ব্যবহৃত হয়, তবে Mutation ডেটার পরিবর্তন, সৃষ্টি বা মুছতে সাহায্য করে। একটি Mutation কুয়েরি ক্লায়েন্টকে সার্ভারে ডেটার যেকোনো পরিবর্তন করতে দেয়, যেমন নতুন ডেটা তৈরি করা, পুরানো ডেটা আপডেট করা বা ডেটা মুছে ফেলা।
Mutation এর ব্যবহার
Mutation এর সাহায্যে আপনি ডেটার create, update, বা delete অপারেশন করতে পারেন। যখন ক্লায়েন্ট একটি Mutation কুয়েরি পাঠায়, তখন সার্ভার সেই কুয়েরি অনুযায়ী ডেটা পরিবর্তন করে এবং প্রয়োজনীয় ফলাফল ফেরত দেয়।
Mutation স্কিমা (Schema) উদাহরণ
এখানে একটি Mutation স্কিমা উদাহরণ দেওয়া হলো যা একটি ব্যবহারকারী তৈরি (create) এবং আপডেট (update) করার জন্য ব্যবহৃত হয়:
type Mutation {
createUser(name: String!, email: String!, age: Int!): User
updateUser(id: ID!, name: String, email: String, age: Int): User
}
এখানে:
- createUser: একটি নতুন ইউজার তৈরি করে। এটি একটি
name,email, এবংageইনপুট নেয় এবং একটিUserঅবজেক্ট ফেরত দেয়। - updateUser: একটি বিদ্যমান ইউজার আপডেট করে। এটি
idদিয়ে একটি নির্দিষ্ট ইউজার চিহ্নিত করে এবংname,email, বাageপরিবর্তন করতে পারে। এটি একটিUserঅবজেক্ট ফেরত দেয় যা আপডেটেড ইউজারের তথ্য ধারণ করে।
Mutation কুয়েরি উদাহরণ
Mutation এর সাহায্যে আপনি ডেটা পরিবর্তন করার জন্য কুয়েরি পাঠাতে পারেন। নিচে দুটি উদাহরণ দেওয়া হলো:
১. ইউজার তৈরি (Create User)
mutation {
createUser(name: "John Doe", email: "john.doe@example.com", age: 30) {
id
name
email
}
}
এটি সার্ভারকে বলছে একটি নতুন User তৈরি করতে যেখানে নাম John Doe, ইমেইল john.doe@example.com, এবং বয়স 30। সার্ভার ইউজারের id, name, এবং email ফেরত পাঠাবে।
২. ইউজার আপডেট (Update User)
mutation {
updateUser(id: "12345", name: "Jane Doe", email: "jane.doe@example.com") {
id
name
email
}
}
এটি সার্ভারকে বলছে যে, id 12345 এর ইউজারের name এবং email আপডেট করতে। সার্ভার আপডেট হওয়া ইউজারের id, name, এবং email ফেরত পাঠাবে।
Mutation এর রেজোলভার (Resolver)
প্রতিটি Mutation অপারেশনকে একটি resolver দ্বারা প্রক্রিয়া করা হয়। একটি resolver হল একটি ফাংশন যা সার্ভারে যে পরিবর্তনটি করতে হবে তা নির্ধারণ করে এবং তারপর ফলস্বরূপ ডেটা ক্লায়েন্টকে ফেরত দেয়।
উদাহরণস্বরূপ, একটি createUser Mutation এর জন্য resolver এইভাবে দেখতে পারে:
const resolvers = {
Mutation: {
createUser: (parent, args, context, info) => {
const { name, email, age } = args;
// নতুন ইউজার তৈরি করার লজিক
const newUser = { id: '12345', name, email, age };
return newUser;
},
updateUser: (parent, args, context, info) => {
const { id, name, email, age } = args;
// ইউজার আপডেট করার লজিক
const updatedUser = { id, name: name || "Existing Name", email, age };
return updatedUser;
}
}
};
এখানে:
- createUser resolver একটি নতুন ইউজার তৈরি করে এবং ইউজারের তথ্য (যেমন
id,name,email) ফেরত পাঠায়। - updateUser resolver একটি বিদ্যমান ইউজার আপডেট করে এবং নতুন তথ্য ফেরত পাঠায়।
Mutation এবং Query এর পার্থক্য
| Feature | Query | Mutation |
|---|---|---|
| কার্য | ডেটা পড়া (fetching data) | ডেটা পরিবর্তন করা (modifying data) |
| পুনরাবৃত্তি | একই কুয়েরি বারবার করা যায় | একাধিক mutation একই সময়ে করা যায় |
| ফলাফল | সাধারণত শুধুমাত্র ডেটা ফেরত আসে | ডেটার পরিবর্তন বা নতুন ডেটা তৈরি হয় |
| অপারেশন | read-only (পড়তে পারবে) | write-operation (লিখতে বা পরিবর্তন করতে পারে) |
সারাংশ
Mutation হল GraphQL-এর একটি গুরুত্বপূর্ণ ফিচার যা ডেটা পরিবর্তন, সৃষ্টি বা মুছে ফেলার কাজ করে। এটি Query থেকে আলাদা, কারণ Query শুধুমাত্র ডেটা পড়ার জন্য ব্যবহৃত হয়, কিন্তু Mutation ডেটাকে আপডেট, তৈরি, বা মুছে ফেলার জন্য ব্যবহৃত হয়। Mutation কুয়েরি পাঠানোর মাধ্যমে ক্লায়েন্ট ডেটার পরিবর্তন ঘটাতে পারে এবং সার্ভার সেই পরিবর্তিত ডেটা ফেরত পাঠায়।
Read more