Access Control এবং Permission Management

TypeORM এর নিরাপত্তা best practices - টাইপওআরএম (TypeORM) - Web Development

271

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

GraphQL একটি জিজ্ঞাসা ভাষা (query language) এবং API এর জন্য একটি রানটাইম, যা ক্লায়েন্টদেরকে তাদের প্রয়োজনীয় ডেটা সুনির্দিষ্টভাবে অনুরোধ করতে সক্ষম করে। এটি REST API এর বিকল্প হিসাবে ব্যবহৃত হয়, কারণ GraphQL এ ক্লায়েন্ট শুধুমাত্র প্রয়োজনীয় ডেটা পাঠায় এবং সার্ভার শুধুমাত্র সেই ডেটা রিটার্ন করে, ফলে কার্যকরী এবং কম্প্যাক্ট ডেটা ট্রান্সফার হয়।

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

GraphQL এবং TypeORM এর সংমিশ্রণ Web Development-এ শক্তিশালী ডেটা ম্যানিপুলেশন এবং API প্রদান করতে পারে। এই গাইডে, আমরা দেখব TypeORM এর সাথে GraphQL কিভাবে ইন্টিগ্রেট করা যায়।


TypeORM এবং GraphQL ইন্টিগ্রেশন: একটি সাধারণ প্রক্রিয়া

১. প্রকল্প সেটআপ

প্রথমে, আমাদের Node.js এবং TypeScript ভিত্তিক একটি প্রকল্প তৈরি করতে হবে। এরপর, আমরা TypeORM, GraphQL, এবং অন্যান্য প্রয়োজনীয় লাইব্রেরি ইনস্টল করব।

১.১ Node.js প্রকল্প তৈরি করা:
mkdir typeorm-graphql-project
cd typeorm-graphql-project
npm init -y
১.২ প্রয়োজনীয় প্যাকেজ ইনস্টল করা:
npm install typeorm graphql @nestjs/graphql typeorm-graphql apollo-server-express express reflect-metadata
npm install typescript ts-node @types/node --save-dev
  • typeorm: TypeORM লাইব্রেরি ইনস্টল।
  • graphql: GraphQL লাইব্রেরি।
  • @nestjs/graphql: NestJS এর জন্য GraphQL।
  • apollo-server-express: Apollo Server যা Express এ GraphQL চালাতে সাহায্য করে।
১.৩ TypeScript কনফিগারেশন:
npx tsc --init

এটি tsconfig.json ফাইল তৈরি করবে যেখানে TypeScript কম্পাইলেশন সেটিংস কনফিগার করা হয়।


২. TypeORM কনফিগারেশন

TypeORM সেটআপের জন্য একটি ডাটাবেস কনফিগারেশন ফাইল তৈরি করতে হবে।

২.১ ormconfig.json ফাইল তৈরি করা:
{
  "type": "postgres",
  "host": "localhost",
  "port": 5432,
  "username": "postgres",
  "password": "your_password",
  "database": "your_database",
  "entities": ["src/entity/*.ts"],
  "synchronize": true
}

এখানে, আমরা PostgreSQL ডাটাবেস ব্যবহার করেছি, তবে আপনি অন্য ডেটাবেস ড্রাইভার যেমন MySQL, SQLite ইত্যাদি ব্যবহার করতে পারেন।


৩. Entity তৈরি করা

এখন একটি Entity তৈরি করা যাক, যাতে আমাদের ডাটাবেসের টেবিলের গঠন থাকে। এখানে, আমরা User নামক একটি Entity তৈরি করছি।

৩.১ User Entity তৈরি করা:
import { Entity, PrimaryGeneratedColumn, Column } from "typeorm";

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

  @Column()
  name: string;

  @Column()
  email: string;
}

এখানে, User Entity একটি টেবিলের প্রতিনিধিত্ব করছে যেটিতে id, name, এবং email কলাম রয়েছে।


৪. GraphQL স্কিমা তৈরি করা

GraphQL স্কিমা তৈরি করার জন্য আমরা @nestjs/graphql লাইব্রেরির @ObjectType, @Field ডেকোরেটর ব্যবহার করব।

৪.১ User স্কিমা তৈরি করা:
import { ObjectType, Field, Int } from '@nestjs/graphql';

@ObjectType()
export class UserType {
  @Field(type => Int)
  id: number;

  @Field()
  name: string;

  @Field()
  email: string;
}

এখানে, আমরা UserType নামে একটি GraphQL স্কিমা তৈরি করেছি, যেটি User Entity এর মত দেখতে।


৫. Resolver তৈরি করা

Resolver হল GraphQL এ রিকোয়েস্ট হ্যান্ডল করার জায়গা, যেখানে কুয়েরি এবং মিউটেশনগুলি ব্যাখ্যা করা হয়।

৫.১ User Resolver তৈরি করা:
import { Resolver, Query, Mutation, Args } from '@nestjs/graphql';
import { UserType } from './user.model';
import { User } from './user.entity';
import { getRepository } from 'typeorm';

@Resolver(of => UserType)
export class UserResolver {
  @Query(returns => [UserType])
  async users(): Promise<User[]> {
    return await getRepository(User).find();
  }

  @Mutation(returns => UserType)
  async createUser(
    @Args('name') name: string,
    @Args('email') email: string,
  ): Promise<User> {
    const user = new User();
    user.name = name;
    user.email = email;
    return await getRepository(User).save(user);
  }
}

এখানে, users কুয়েরি ব্যবহার করে সব User রিটার্ন করা হয়েছে এবং createUser মিউটেশন ব্যবহার করে নতুন ব্যবহারকারী তৈরি করা হয়েছে।


৬. GraphQL Server তৈরি করা

এখন আমাদের Apollo Server ব্যবহার করে GraphQL API চালু করতে হবে।

৬.১ Apollo Server ইনস্টলেশন এবং কনফিগারেশন:
import { ApolloServer } from 'apollo-server-express';
import express from 'express';
import { buildSchema } from 'type-graphql';
import { UserResolver } from './user.resolver';
import { createConnection } from 'typeorm';

async function startServer() {
  const app = express();
  
  // TypeORM connection
  await createConnection();

  // GraphQL schema
  const schema = await buildSchema({
    resolvers: [UserResolver],
  });

  // Apollo Server setup
  const server = new ApolloServer({
    schema,
  });

  // Apply middleware to Express app
  server.applyMiddleware({ app });

  app.listen(4000, () =>
    console.log('Server is running at http://localhost:4000/graphql')
  );
}

startServer();

এখানে, আমরা ApolloServer দিয়ে GraphQL API তৈরি করছি এবং UserResolver-এ ডিফাইন করা কুয়েরি এবং মিউটেশনগুলি চালু করছি।


৭. GraphQL API টেস্ট করা

আপনার অ্যাপ্লিকেশন চালু করার পর, আপনি http://localhost:4000/graphql URL এ গিয়ে GraphQL API টেস্ট করতে পারবেন। নিচে কিছু কুয়েরি এবং মিউটেশন উদাহরণ দেওয়া হলো:

Query (সব User দেখা):
query {
  users {
    id
    name
    email
  }
}
Mutation (নতুন User তৈরি করা):
mutation {
  createUser(name: "John Doe", email: "john@example.com") {
    id
    name
    email
  }
}

সারাংশ

TypeORM এর সাথে GraphQL ইন্টিগ্রেশন Web Development-এ শক্তিশালী এবং কার্যকরী API তৈরি করতে সাহায্য করে। আপনি TypeORM ব্যবহার করে ডেটাবেসের সাথে সম্পর্কিত ডেটা পরিচালনা করতে পারেন এবং GraphQL ব্যবহার করে ক্লায়েন্টদের জন্য প্রয়োজনীয় ডেটা নির্দিষ্টভাবে এবং কার্যকরীভাবে প্রদান করতে পারেন। এই গাইডে TypeORM এবং GraphQL এর সাথে ইন্টিগ্রেশন এবং সেটআপ করার প্রক্রিয়া বিস্তারিতভাবে ব্যাখ্যা করা হয়েছে, যাতে আপনি একটি পূর্ণাঙ্গ GraphQL API তৈরি করতে পারেন।

Content added By
Promotion

Are you sure to start over?

Loading...