Arguments এবং Input Types ব্যবহার করে Mutation পরিচালনা

GraphQL Mutation - গ্রাফকিউএল (GraphQL) - Web Development

235

গ্রাফকিউএল (GraphQL)-এ Mutation হলো ডেটার পরিবর্তন বা আপডেট করার জন্য ব্যবহৃত একটি কুয়েরি অপারেশন। যেখানে Query শুধুমাত্র ডেটা পড়ার জন্য ব্যবহৃত হয়, সেখানে Mutation ব্যবহার করে নতুন ডেটা তৈরি করা, ডেটা আপডেট করা বা ডেটা মুছে ফেলা যায়। Arguments এবং Input Types Mutation-এ ব্যবহার করা হয় যাতে আপনি সার্ভারে ডেটা প্রেরণ করতে পারেন এবং সেই ডেটাকে প্রক্রিয়া করতে পারেন।

এখানে আমরা দেখব কিভাবে Arguments এবং Input Types ব্যবহার করে Mutation পরিচালনা করা হয়।


Mutation এর মৌলিক ধারণা

GraphQL-এ, Mutation হল একটি বিশেষ ধরনের কুয়েরি যা ডেটার পরিবর্তন বা আপডেট ঘটায়। Mutation সাধারণত ইনপুট আর্গুমেন্ট গ্রহণ করে এবং সেই অনুযায়ী ডেটা তৈরি, আপডেট বা ডিলিট করে।

Mutation Syntax:

mutation {
  updateUser(id: "1", name: "New Name") {
    id
    name
  }
}

এখানে updateUser একটি Mutation ফিল্ড এবং এর মধ্যে id এবং name হল ইনপুট আর্গুমেন্টস।


Arguments এবং Input Types ব্যবহার করে Mutation পরিচালনা

Arguments হল কুয়েরির সাথে যুক্ত আর্গুমেন্ট যা ব্যবহারকারী বা ক্লায়েন্ট থেকে ইনপুট হিসেবে আসে। Input Types ব্যবহার করা হয় যখন একাধিক আর্গুমেন্ট একত্রিত করে একটি কাঠামোবদ্ধ ইনপুট তৈরির প্রয়োজন হয়।


১. Mutation-এর জন্য Input Type তৈরি করা

যতদিন না পর্যন্ত ইনপুটের জন্য একাধিক ফিল্ড প্রয়োজন না, ততদিন আপনি সরাসরি আর্গুমেন্ট ব্যবহার করতে পারেন। তবে যখন অনেকগুলি ফিল্ডের মাধ্যমে ইনপুট প্রেরণ করতে হয়, তখন Input Type ব্যবহার করা হয়।

UserInputType নামের একটি Input Type তৈরি করা যাক, যা name, email, এবং age ধারণ করবে:

const { GraphQLInputObjectType, GraphQLString, GraphQLInt } = require('graphql');

// UserInputType তৈরি করা
const UserInputType = new GraphQLInputObjectType({
  name: 'UserInput',
  fields: () => ({
    name: { type: GraphQLString },
    email: { type: GraphQLString },
    age: { type: GraphQLInt }
  })
});

এখানে UserInputType ইনপুট হিসেবে নাম, ইমেইল এবং বয়স গ্রহণ করবে।


২. Mutation তৈরি করা

এবার আমরা একটি Mutation তৈরি করব যা একটি নতুন ইউজার তৈরি করবে। Mutation এ UserInputType ইনপুট টাইপের মাধ্যমে ইউজারের ডেটা গ্রহণ করা হবে।

const { GraphQLObjectType, GraphQLString, GraphQLID } = require('graphql');
const UserType = require('./UserType'); // পূর্বে তৈরি UserType এর কোড

// Mutation টাইপ তৈরি করা
const Mutation = new GraphQLObjectType({
  name: 'Mutation',
  fields: {
    addUser: {
      type: UserType, // যে টাইপের ডেটা ফেরত আসবে
      args: {
        input: { type: UserInputType } // ইনপুট আর্গুমেন্ট (UserInputType)
      },
      resolve(parent, args) {
        // ইনপুট আর্গুমেন্ট থেকে ডেটা গ্রহণ
        const { name, email, age } = args.input;

        // নতুন ইউজার তৈরি (এটি সাধারণত ডাটাবেস অপারেশন হতে পারে)
        const user = {
          id: "1", // উদাহরণস্বরূপ id
          name,
          email,
          age
        };

        // তৈরি করা ইউজারটি ফেরত পাঠানো
        return user;
      }
    }
  }
});

এখানে, addUser একটি Mutation ফিল্ড যা UserInputType ইনপুট আর্গুমেন্ট গ্রহণ করে এবং একটি নতুন UserType রিটার্ন করে।


৩. Mutation কিভাবে কুয়েরি করা যায়

এখন, ক্লায়েন্ট থেকে কিভাবে এই Mutation কুয়েরি করা হবে তা দেখুন। এটি সাধারণত একটি POST রিকুয়েস্টের মাধ্যমে সার্ভারে পাঠানো হয়।

Mutation কুয়েরি:

mutation {
  addUser(input: { name: "John Doe", email: "john@example.com", age: 25 }) {
    id
    name
    email
    age
  }
}

এখানে, আমরা addUser Mutation কুয়েরি করছি এবং input আর্গুমেন্টে ইউজারের নাম, ইমেইল এবং বয়স পাঠাচ্ছি।

ফলাফল:

{
  "data": {
    "addUser": {
      "id": "1",
      "name": "John Doe",
      "email": "john@example.com",
      "age": 25
    }
  }
}

এখানে, id, name, email, এবং age এর মানগুলি সফলভাবে ফিরিয়ে দেওয়া হয়েছে, যা নতুন ইউজার তৈরি করার পরে সার্ভার থেকে প্রাপ্ত ফলাফল।


৪. Mutation-এর জন্য Argument ব্যবহার করা

যখন ইনপুটগুলি খুব সাধারণ বা অল্প ফিল্ডের জন্য হয়, তখন আপনি Argument ব্যবহার করতে পারেন, যেমন:

const { GraphQLObjectType, GraphQLString, GraphQLID } = require('graphql');

// Mutation টাইপ তৈরি করা
const Mutation = new GraphQLObjectType({
  name: 'Mutation',
  fields: {
    updateUser: {
      type: UserType, // যে টাইপের ডেটা ফেরত আসবে
      args: {
        id: { type: GraphQLID }, // ইউজারের id আর্গুমেন্ট
        name: { type: GraphQLString },
        email: { type: GraphQLString }
      },
      resolve(parent, args) {
        // ইউজারের ডেটা আপডেট করা
        const { id, name, email } = args;

        // এটি একটি সিম্পল ফিক্সড রেসপন্স
        return {
          id,
          name: name || "Updated Name", // নাম পরিবর্তন করা
          email: email || "updated@example.com"
        };
      }
    }
  }
});

এখানে, আমরা ইউজারের id, name, এবং email আর্গুমেন্ট গ্রহণ করছি এবং সেই অনুযায়ী ইউজার আপডেট করছি।

Mutation কুয়েরি:

mutation {
  updateUser(id: "1", name: "Jane Doe", email: "jane@example.com") {
    id
    name
    email
  }
}

ফলাফল:

{
  "data": {
    "updateUser": {
      "id": "1",
      "name": "Jane Doe",
      "email": "jane@example.com"
    }
  }
}

এখানে, id, name, এবং email আপডেট করা হয়েছে।


সারাংশ

GraphQL-এ Mutation ব্যবহার করে আপনি ডেটা তৈরি, আপডেট বা মুছে ফেলতে পারেন। Arguments এবং Input Types Mutation পরিচালনার জন্য অত্যন্ত গুরুত্বপূর্ণ টুলস, যেগুলি আপনার API-কে আরও শক্তিশালী এবং নমনীয় করে তোলে। Arguments সাধারণ ইনপুট গ্রহণের জন্য এবং Input Types একাধিক ফিল্ডের ডেটা পাঠানোর জন্য ব্যবহৃত হয়। Mutation কুয়েরি করলে আপনি সার্ভারে ডেটা প্রেরণ করতে এবং সেই অনুযায়ী ফলাফল ফেরত পেতে পারেন।

Content added By
Promotion

Are you sure to start over?

Loading...