গ্রাফকিউএল (GraphQL)-এ Multiple Mutations এবং Response Structure দুটি গুরুত্বপূর্ণ ধারণা যা ডেটা পরিবর্তনের কার্যকারিতা এবং ফলাফল প্রক্রিয়াকরণে সহায়ক। Multiple Mutations ব্যবহার করে একাধিক পরিবর্তন একই কুয়েরির মাধ্যমে করা যায় এবং Response Structure নিশ্চিত করে যে, সঠিকভাবে সমস্ত পরিবর্তন বা ডেটার ফলাফল কিভাবে ফিরে আসবে।
Multiple Mutations
গ্রাফকিউএল-এ, একাধিক মিউটেশনকে একটি কুয়েরির মধ্যে একত্রিত করা সম্ভব। এটি বেশ কার্যকরী যখন আপনি একাধিক ডেটা পরিবর্তন করতে চান কিন্তু সেগুলো একে অপরের সাথে সম্পর্কিত নয়। Multiple Mutations একসাথে একটি রিকুয়েস্টে পাঠানো হলে, সার্ভার প্রতিটি মিউটেশন আলাদাভাবে সম্পাদন করে এবং প্রতিটি মিউটেশনের ফলাফল ফেরত পাঠায়।
Multiple Mutations এর উদাহরণ:
ধরা যাক, আপনি একটি ব্যবহারকারী তৈরি করতে চান এবং তার সঙ্গে একটি নতুন পণ্যের তথ্য আপডেট করতে চান। এই দুটি মিউটেশন একসাথে পাঠানোর জন্য আপনি নীচের মতো কুয়েরি করতে পারেন:
mutation {
createUser(name: "John Doe", email: "john@example.com") {
id
name
}
updateProduct(id: "101", price: 199.99) {
id
price
}
}
এখানে:
- createUser: একটি নতুন ব্যবহারকারী তৈরি করছে।
- updateProduct: একটি পণ্যের মূল্য আপডেট করছে।
এ দুটি মিউটেশন একসাথে পাঠানো হয়েছে, এবং প্রতিটি মিউটেশন সফলভাবে সম্পন্ন হলে তার ফলাফল (যেমন id এবং name বা id এবং price) আলাদাভাবে ফিরে আসবে।
Multiple Mutations এর কার্যকারিতা
- একটি রাউন্ড-ট্রিপে একাধিক মিউটেশন: একাধিক মিউটেশন একই সময়ে পাঠানো সম্ভব, ফলে ক্লায়েন্ট এবং সার্ভারের মধ্যে একাধিক যোগাযোগের প্রয়োজন হয় না।
- অধিক কার্যকারিতা: এটি ডেটার পরিবর্তন দ্রুত এবং একসাথে করতে সাহায্য করে, ফলে অ্যাপ্লিকেশন আরও দ্রুত কাজ করে।
Response Structure
GraphQL কুয়েরি বা মিউটেশন করলে, সার্ভার একটি নির্দিষ্ট Response Structure প্রদান করে। এই স্ট্রাকচার ক্লায়েন্টকে কেবল সেই ডেটা প্রদান করে যা তারা চেয়েছে, এবং ডেটার গঠন ক্লায়েন্টের কুয়েরির ওপর ভিত্তি করে নির্ধারিত হয়।
Basic Response Structure:
একটি সাধারণ মিউটেশন বা কুয়েরির উত্তর একটি JSON অবজেক্ট হিসেবে প্রদান করা হয়, যেখানে কুয়েরি বা মিউটেশনের ফলাফল একটি data প্রপার্টির মধ্যে থাকে।
উদাহরণ:
mutation {
createUser(name: "John Doe", email: "john@example.com") {
id
name
}
}
এই মিউটেশনের জন্য সার্ভারের প্রতিক্রিয়া হবে:
{
"data": {
"createUser": {
"id": "1",
"name": "John Doe"
}
}
}
এখানে:
- data: এটি মূল ফলাফল যেটি ক্লায়েন্টের কুয়েরির ভিত্তিতে ফিরে আসে।
- createUser: এটি মিউটেশনের ফলাফল, যেখানে
idএবংnameপ্রদান করা হয়েছে।
Multiple Mutations এর Response Structure:
যখন আপনি একাধিক মিউটেশন পাঠান, প্রতিটি মিউটেশনের জন্য একটি আলাদা ফলাফল ফিরিয়ে আসে। প্রতিটি মিউটেশনের ফলাফল একটি ভিন্ন ফিল্ডে থাকবে, যেমন:
mutation {
createUser(name: "John Doe", email: "john@example.com") {
id
name
}
updateProduct(id: "101", price: 199.99) {
id
price
}
}
এটি এইভাবে একটি প্রতিক্রিয়া প্রদান করবে:
{
"data": {
"createUser": {
"id": "1",
"name": "John Doe"
},
"updateProduct": {
"id": "101",
"price": 199.99
}
}
}
এখানে:
- createUser এবং updateProduct আলাদা আলাদা ফিল্ড হিসেবে ফলাফল পাচ্ছে।
- প্রতিটি মিউটেশন তার নিজস্ব ফলাফল প্রদান করছে, যেমন ইউজারের
idএবংname, এবং পণ্যেরidএবংprice।
Error Handling in Multiple Mutations
গ্রাফকিউএল একাধিক মিউটেশন করার সময় যদি কোনো একটি মিউটেশন ত্রুটি (error) ফেরত দেয়, তবে সার্ভার সাধারণত একটি errors ফিল্ডেও ত্রুটির বিস্তারিত বার্তা ফেরত পাঠাবে। এটি আপনাকে জানিয়ে দেয় কোন মিউটেশনটি ব্যর্থ হয়েছে এবং কেন।
Error Response Example:
{
"data": {
"createUser": {
"id": "1",
"name": "John Doe"
},
"updateProduct": null
},
"errors": [
{
"message": "Product ID not found",
"locations": [
{
"line": 3,
"column": 3
}
],
"path": ["updateProduct"]
}
]
}
এখানে:
- updateProduct এর ফলাফল
nullএসেছে, কারণ তাতে একটি ত্রুটি ঘটেছে (যেমনProduct ID not found)। - errors ফিল্ডে ত্রুটির বিস্তারিত বার্তা দেওয়া হয়েছে, যা ক্লায়েন্টকে সাহায্য করবে ত্রুটি চিহ্নিত করতে।
সারাংশ
Multiple Mutations গ্রাফকিউএলে একাধিক ডেটা পরিবর্তন একসাথে করার সুযোগ দেয়, যা কার্যকারিতা এবং কার্যক্ষমতা বৃদ্ধি করে। একই কুয়েরির মধ্যে একাধিক মিউটেশন পাঠানো এবং তাদের ফলাফল পাওয়া যায়। Response Structure ক্লায়েন্টকে সঠিকভাবে ফলাফল প্রদান করতে সহায়ক, যেখানে প্রতিটি মিউটেশনের ফলাফল একটি পৃথক ফিল্ডে থাকবে এবং ত্রুটির ক্ষেত্রে পৃথকভাবে তার বিশদ বার্তা প্রদান করা হবে।
Read more