GraphQL Resolvers এবং TypeORM ব্যবহার করে ডেটা ফেচ করা

TypeORM এবং GraphQL Integration - টাইপওআরএম (TypeORM) - Web Development

296

GraphQL এবং TypeORM পরিচিতি

GraphQL হল একটি শক্তিশালী API ভাষা এবং রানটাইম, যা ক্লায়েন্টদের নির্দিষ্টভাবে কীভাবে ডেটা চাওয়া হবে তা কাস্টমাইজ করার সুবিধা দেয়। এটি ডেটার জন্য একটি কুয়েরি ভাষা এবং একটি রানটাইম প্রদান করে যা ডেটা ফেচ, মিউটেশন এবং সাবস্ক্রিপশন পরিচালনা করতে সহায়তা করে।

TypeORM হল একটি ORM (Object-Relational Mapping) লাইব্রেরি যা JavaScript/TypeScript-এ ডেটাবেস পরিচালনার জন্য ব্যবহৃত হয়। TypeORM ব্যবহার করে ডেটাবেস টেবিলের সাথে যোগাযোগ এবং CRUD অপারেশন খুব সহজে করা যায়।

এই টিউটোরিয়ালে, আমরা GraphQL এবং TypeORM একত্রে ব্যবহার করে কিভাবে ডেটা ফেচ করা যায়, সেই সম্পর্কে আলোচনা করব। এতে আমরা TypeORM এর Entity এবং GraphQL Resolver ব্যবহার করব ডেটা ফেচ এবং ম্যানিপুলেট করতে।


GraphQL Resolver এবং TypeORM এর মধ্যে সংযোগ

GraphQL Resolver হচ্ছে GraphQL কুয়েরির জন্য একটি ফাংশন যা কার্যকরী ডেটা প্রদান করে। TypeORM ব্যবহার করে আপনি GraphQL Resolver-এ ডেটাবেস থেকে ডেটা ফেচ করতে পারেন।


১. প্রথমে প্রয়োজনীয় প্যাকেজ ইনস্টল করা

GraphQL এবং TypeORM একসাথে কাজ করার জন্য প্রথমে আপনাকে কিছু প্যাকেজ ইনস্টল করতে হবে:

npm install typeorm graphql apollo-server-express reflect-metadata

এছাড়া, TypeScript ব্যবহার করলে TypeScript রিলেটেড প্যাকেজ ইনস্টল করুন:

npm install typescript ts-node @types/node @types/express

২. TypeORM Entity তৈরি করা

প্রথমে, একটি Entity তৈরি করতে হবে যা আপনার ডেটাবেস টেবিলের প্রতিনিধিত্ব করবে।

User Entity উদাহরণ:

import { Entity, PrimaryGeneratedColumn, Column } from "typeorm";

@Entity()
export class User {
  @PrimaryGeneratedColumn()
  id: number;

  @Column()
  name: string;

  @Column()
  email: string;
}

এখানে, User নামে একটি Entity তৈরি করা হয়েছে, যা ডেটাবেসের একটি টেবিলের প্রতিনিধিত্ব করে।


৩. GraphQL Schema তৈরি করা

এখন, আপনাকে GraphQL Schema তৈরি করতে হবে, যা কুয়েরি এবং মিউটেশন ডিফাইন করবে। এর মাধ্যমে আপনি ডেটা ফেচ এবং ম্যানিপুলেট করতে পারবেন।

GraphQL Schema উদাহরণ:

import { gql } from "apollo-server-express";

export const typeDefs = gql`
  type User {
    id: Int!
    name: String!
    email: String!
  }

  type Query {
    users: [User]
    user(id: Int!): User
  }

  type Mutation {
    createUser(name: String!, email: String!): User
  }
`;

এখানে আমরা User টাইপ তৈরি করেছি এবং একটি Query এবং Mutation সংজ্ঞায়িত করেছি। Query এর মধ্যে users এবং user এর জন্য কুয়েরি রয়েছে, যেখানে users সব ব্যবহারকারী রিটার্ন করবে এবং user(id) একটি নির্দিষ্ট আইডি অনুযায়ী ব্যবহারকারী রিটার্ন করবে। MutationcreateUser একটি নতুন ব্যবহারকারী তৈরি করবে।


৪. GraphQL Resolvers তৈরি করা

Resolvers হল সেই ফাংশন যা GraphQL Schema থেকে কুয়েরি বা মিউটেশন আসলে তাদের জন্য ডেটা ফেরত দেয়। এখন আমরা TypeORM এর রেপোজিটরি ব্যবহার করে ডেটাবেস থেকে ডেটা ফেচ এবং ম্যানিপুলেশন করব।

Resolvers উদাহরণ:

import { User } from "./entity/User";
import { getRepository } from "typeorm";

export const resolvers = {
  Query: {
    users: async () => {
      const userRepository = getRepository(User);
      return await userRepository.find();  // সকল ব্যবহারকারী ফেচ করা
    },
    user: async (_: any, { id }: { id: number }) => {
      const userRepository = getRepository(User);
      return await userRepository.findOne(id);  // নির্দিষ্ট ব্যবহারকারী ফেচ করা
    }
  },
  Mutation: {
    createUser: async (_: any, { name, email }: { name: string, email: string }) => {
      const userRepository = getRepository(User);
      const user = new User();
      user.name = name;
      user.email = email;

      return await userRepository.save(user);  // নতুন ব্যবহারকারী তৈরি করা
    }
  }
};

এখানে, আমরা Query এবং Mutation এর জন্য users, user, এবং createUser রেজলভার তৈরি করেছি। TypeORM এর getRepository(User) ব্যবহার করে আমরা ডেটাবেস থেকে ডেটা ফেচ করছি এবং নতুন ব্যবহারকারী তৈরি করছি।


৫. Apollo Server এবং Express সেটআপ

এখন, আমরা Apollo Server এবং Express ব্যবহার করে GraphQL API সেটআপ করব।

import "reflect-metadata";
import express from "express";
import { ApolloServer } from "apollo-server-express";
import { createConnection } from "typeorm";
import { typeDefs } from "./schema";
import { resolvers } from "./resolvers";

createConnection().then(async () => {
  const app = express();

  // Apollo Server তৈরি
  const server = new ApolloServer({
    typeDefs,
    resolvers
  });

  // Apollo Server কে Express এ যুক্ত করা
  await server.start();
  server.applyMiddleware({ app });

  app.listen(4000, () => {
    console.log("Server is running on http://localhost:4000/graphql");
  });
}).catch(error => console.log(error));

এখানে, আমরা Express এ একটি HTTP সার্ভার তৈরি করেছি এবং Apollo Server ব্যবহার করে GraphQL API তৈরি করেছি। এখন আপনি http://localhost:4000/graphql এ গিয়ে GraphQL কুয়েরি করতে পারবেন।


৬. GraphQL Query উদাহরণ

এখন, GraphQL API চালু করার পর, আপনি একটি GraphQL কুয়েরি ব্যবহার করে ডেটা ফেচ করতে পারেন। উদাহরণস্বরূপ:

Users কুয়েরি:

query {
  users {
    id
    name
    email
  }
}

Single User কুয়েরি:

query {
  user(id: 1) {
    id
    name
    email
  }
}

Create User Mutation:

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

এখানে, আপনি users কুয়েরি ব্যবহার করে সমস্ত ব্যবহারকারী বা user(id: 1) কুয়েরি ব্যবহার করে একটি নির্দিষ্ট ব্যবহারকারী তথ্য পাবেন। এছাড়া, createUser মিউটেশন দিয়ে আপনি নতুন ব্যবহারকারী তৈরি করতে পারবেন।


সারাংশ

GraphQL এবং TypeORM একত্রে ব্যবহার করে আপনি একটি শক্তিশালী API তৈরি করতে পারেন, যেখানে ডেটাবেস থেকে ডেটা ফেচ এবং ম্যানিপুলেশন করতে TypeORM ব্যবহার হয় এবং GraphQL দিয়ে কাস্টম কুয়েরি বা মিউটেশন করা হয়। TypeORM এর getRepository এবং save এর মতো ফাংশনগুলো ব্যবহার করে আপনি সহজেই ডেটা ম্যানিপুলেশন করতে পারবেন, আর GraphQL Resolver দিয়ে সেই ডেটা ক্লায়েন্টের কাছে পৌঁছাতে পারবেন।

Content added By
Promotion

Are you sure to start over?

Loading...