Custom Types তৈরি করা

GraphQL Schema এবং Type System - গ্রাফকিউএল (GraphQL) - Web Development

219

GraphQL-এ Custom Types তৈরি করা হল একটি গুরুত্বপূর্ণ অংশ যা ডেটা মডেল এবং স্কিমাকে আরও নমনীয় এবং শক্তিশালী করে তোলে। Custom Types ব্যবহার করে আপনি আপনার API-তে নতুন ডেটা ধরন এবং সম্পর্ক তৈরি করতে পারেন, যা ক্লায়েন্টদের নির্দিষ্ট প্রয়োজনীয়তা অনুযায়ী ডেটা ফিল্ড প্রদান করে।


Custom Types তৈরি করার জন্য প্রয়োজনীয় উপাদান

GraphQL-এ Custom Types তৈরি করতে, আপনি GraphQLObjectType, GraphQLString, GraphQLInt, GraphQLBoolean ইত্যাদি ব্যবহার করতে পারেন, যা আপনার ডেটার ধরন নির্ধারণ করে। সাধারণত Object Types, Input Types, Enum Types, এবং Scalar Types GraphQL-এ কাস্টম টাইপ তৈরি করার জন্য ব্যবহৃত হয়।


১. Object Types তৈরি করা

Object Types হল GraphQL-এর মূল ডেটা ধরনের মধ্যে একটি, যা বিভিন্ন ফিল্ড ধারণ করে। এগুলি মূলত ডেটার কাঠামো (structure) এবং সম্পর্ক নির্দেশ করে।

উদাহরণ:

ধরা যাক, আমরা একটি User টাইপ তৈরি করতে চাই, যেখানে ব্যবহারকারীর নাম, ইমেইল এবং বয়স থাকবে।

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

// User টাইপ তৈরি করা
const UserType = new GraphQLObjectType({
  name: 'User', // টাইপের নাম
  fields: () => ({
    id: { type: GraphQLString }, // id ফিল্ড
    name: { type: GraphQLString }, // নাম ফিল্ড
    email: { type: GraphQLString }, // ইমেইল ফিল্ড
    age: { type: GraphQLInt } // বয়স ফিল্ড
  })
});

এখানে আমরা UserType নামে একটি কাস্টম টাইপ তৈরি করেছি, যা চারটি ফিল্ড ধারণ করে: id, name, email, এবং age


২. Input Types তৈরি করা

Input Types হল বিশেষ ধরনের কাস্টম টাইপ যা ডেটা গ্রহণ করতে ব্যবহৃত হয়। এটি সাধারণত মিউটেশন (Mutation) এর ক্ষেত্রে ব্যবহার হয়, যেখানে ক্লায়েন্ট সার্ভারে ডেটা পাঠানোর জন্য এই টাইপ ব্যবহার করতে পারে।

উদাহরণ:

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

const { GraphQLInputObjectType } = require('graphql');

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

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


৩. Enum Types তৈরি করা

Enum Types হল ডেটার একটি পূর্বনির্ধারিত সেট যা কেবলমাত্র নির্দিষ্ট মান ধারণ করতে পারে। এটি ডেটার নির্দিষ্ট মান সীমাবদ্ধ করার জন্য ব্যবহার করা হয়।

উদাহরণ:

ধরা যাক, আমরা একটি Status নামের Enum টাইপ তৈরি করতে চাই, যেখানে ব্যবহারকারীর স্ট্যাটাস হবে "Active", "Inactive", বা "Pending"।

const { GraphQLEnumType } = require('graphql');

// Status Enum টাইপ তৈরি করা
const StatusEnumType = new GraphQLEnumType({
  name: 'Status',
  values: {
    ACTIVE: { value: 'Active' },
    INACTIVE: { value: 'Inactive' },
    PENDING: { value: 'Pending' }
  }
});

এখানে StatusEnumType শুধুমাত্র তিনটি মান গ্রহণ করতে পারবে: Active, Inactive, এবং Pending


৪. Scalar Types তৈরি করা

Scalar Types হল ডেটার প্রাথমিক ধরনের জন্য ব্যবহৃত। GraphQL-এ কিছু ডিফল্ট Scalar Types রয়েছে যেমন String, Int, Float, Boolean, এবং ID। তবে আপনি কাস্টম Scalar Typesও তৈরি করতে পারেন।

উদাহরণ:

ধরা যাক, আমরা একটি কাস্টম Scalar টাইপ তৈরি করতে চাই, যা একটি Date টাইপ হবে এবং তার মান একটি তারিখের স্ট্রিং (যেমন 2024-12-22) হবে।

const { GraphQLScalarType, Kind } = require('graphql');

// Date Scalar টাইপ তৈরি করা
const DateScalarType = new GraphQLScalarType({
  name: 'Date',
  description: 'A custom scalar type for dates',
  serialize(value) {
    return value.toISOString(); // serialize ডেটা স্ট্রিং হিসাবে
  },
  parseValue(value) {
    return new Date(value); // ইনপুট ডেটা হিসেবে নতুন Date অবজেক্ট তৈরি করা
  },
  parseLiteral(ast) {
    if (ast.kind === Kind.STRING) {
      return new Date(ast.value); // স্ট্রিং ডেটা হিসেবে তারিখে রূপান্তর করা
    }
    return null;
  }
});

এখানে DateScalarType কাস্টম Scalar টাইপ হিসেবে তৈরি করা হয়েছে, যা ডেটা স্ট্রিং রূপে গ্রহণ এবং প্রদান করতে সক্ষম।


৫. কাস্টম টাইপ GraphQL স্কিমায় ব্যবহার করা

এখন যে কাস্টম টাইপগুলি তৈরি করা হয়েছে, সেগুলি GraphQL Schema-এ ব্যবহার করা যায়। নিচে একটি সাধারণ উদাহরণ দেওয়া হলো যেখানে UserType এবং StatusEnumType ব্যবহার করা হয়েছে।

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

// Root Query তৈরি করা
const RootQuery = new GraphQLObjectType({
  name: 'RootQueryType',
  fields: {
    user: {
      type: UserType,
      resolve(parent, args) {
        return {
          id: '1',
          name: 'John Doe',
          email: 'john.doe@example.com',
          age: 30
        };
      }
    },
    status: {
      type: StatusEnumType,
      resolve() {
        return 'ACTIVE'; // Enums এর মান ফেরত দেওয়া
      }
    }
  }
});

// Schema তৈরি করা
const schema = new GraphQLSchema({
  query: RootQuery
});

এখানে, RootQuery তে আমরা UserType এবং StatusEnumType ফিল্ডগুলি ব্যবহার করেছি।


সারাংশ

GraphQL-এ কাস্টম টাইপ তৈরি করা ডেটার কাঠামো এবং API এর কার্যকারিতা বাড়াতে গুরুত্বপূর্ণ ভূমিকা পালন করে। আপনি Object Types, Input Types, Enum Types, এবং Scalar Types তৈরি করে আপনার API-কে আরও নমনীয় এবং শক্তিশালী করতে পারেন। এই কাস্টম টাইপগুলি স্কিমার মাধ্যমে ক্লায়েন্টের জন্য উপযোগী ডেটা সরবরাহ করতে সাহায্য করে।

Content added By
Promotion

Are you sure to start over?

Loading...