Entities, Migrations, Repositories এর ফোল্ডার ব্যবস্থাপনা

TypeORM এর ডিরেক্টরি এবং ফাইল স্ট্রাকচার - টাইপওআরএম (TypeORM) - Web Development

245

টাইপওআরএম (TypeORM) কী?

TypeORM একটি আধুনিক এবং পূর্ণাঙ্গ ORM (Object-Relational Mapping) লাইব্রেরি যা TypeScript এবং JavaScript-এ রিলেশনাল ডাটাবেসের সাথে কাজ করার জন্য ডিজাইন করা হয়েছে। TypeORM এর মাধ্যমে আপনি ডাটাবেস টেবিলগুলিকে Entities (ক্লাস হিসেবে) প্রতিনিধিত্ব করতে পারেন এবং সেগুলোর উপর CRUD (Create, Read, Update, Delete) অপারেশন করতে পারেন।

TypeORM ডাটাবেস ম্যানেজমেন্টের জন্য একটি সিস্টেম প্রদান করে যা Entities, Repositories, এবং Migrations ধারণা ব্যবহার করে ডাটাবেসের স্ট্রাকচার এবং ডেটা পরিচালনা করতে সাহায্য করে।


Entities, Migrations, Repositories এর ফোল্ডার ব্যবস্থাপনা

TypeORM প্রজেক্টে ফোল্ডার স্ট্রাকচার সঠিকভাবে পরিচালনা করা কোডের রক্ষণাবেক্ষণ সহজ করে এবং নতুন ফিচার সংযোজন সহজ করে তোলে। এটি সিস্টেমের স্কেলেবিলিটি এবং উন্নয়ন প্রক্রিয়া দ্রুত করে।


১. Entities

Entities হল TypeORM-এর ক্লাস, যা ডাটাবেসের টেবিল প্রতিনিধিত্ব করে। প্রতিটি Entity একটি ডাটাবেস টেবিলের জন্য একটি ক্লাস এবং এতে প্রপার্টি হিসেবে টেবিলের কলাম থাকে।

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 কলাম হিসেবে ব্যবহার হবে।

Entities ফোল্ডার স্ট্রাকচার:

প্রতিটি Entity সাধারণত একটি পৃথক ফাইল হিসাবে রাখা হয়। ফোল্ডার স্ট্রাকচারে entities নামক একটি ডিরেক্টরি তৈরি করুন এবং এর মধ্যে প্রতিটি Entity এর ফাইল সংরক্ষণ করুন।

src/
  ├── entities/
  │   ├── User.ts
  │   ├── Product.ts
  │   └── Order.ts

২. Migrations

Migrations হল ডাটাবেস স্কিমা পরিবর্তনগুলি সিস্টেম্যাটিকভাবে ট্র্যাক করার এবং পরিচালনা করার উপায়। যখন আপনি একটি Entity তৈরি করেন বা Entity এর স্কিমা পরিবর্তন করেন, তখন মাইগ্রেশন ব্যবহার করে ডাটাবেসে সেই পরিবর্তনটি প্রতিফলিত করতে পারেন।

Migration উদাহরণ:

typeorm migration:create -n CreateUserTable

এটি একটি মাইগ্রেশন ফাইল তৈরি করবে। এরপর, আপনি নতুন Entity এর স্কিমা অনুযায়ী মাইগ্রেশন ফাইলটি সম্পাদনা করতে পারেন।

import {MigrationInterface, QueryRunner} from "typeorm";

export class CreateUserTable1628084412629 implements MigrationInterface {
    public async up(queryRunner: QueryRunner): Promise<void> {
        await queryRunner.query(`CREATE TABLE "user" ("id" SERIAL NOT NULL, "name" character varying NOT NULL, "email" character varying NOT NULL, CONSTRAINT "PK_0d8a1d9e47b2368be7bcd8e087d" PRIMARY KEY ("id"))`);
    }

    public async down(queryRunner: QueryRunner): Promise<void> {
        await queryRunner.query(`DROP TABLE "user"`);
    }
}

এখানে, up মেথডে আপনি ডাটাবেসের পরিবর্তন (টেবিল তৈরি করা) করবেন এবং down মেথডে আপনি সেই পরিবর্তনটি রিভার্স (ডিলিট করা) করবেন।

Migrations ফোল্ডার স্ট্রাকচার:

src/
  ├── migrations/
  │   ├── 1628084412629-CreateUserTable.ts
  │   ├── 1628084612630-CreateProductTable.ts
  │   └── 1628084812631-CreateOrderTable.ts

মাইগ্রেশন ফাইলগুলো সময়ক্রমে সঠিকভাবে নামকরণ করা হয় যাতে সহজেই ট্র্যাক করা যায়।


৩. Repositories

Repositories হল TypeORM-এর এমন একটি ফিচার যা ডাটাবেসে অ্যাক্সেস করতে এবং Entity সম্পর্কিত কাস্টম কুয়েরি পরিচালনা করতে ব্যবহৃত হয়। Repositories Entity এর জন্য CRUD অপারেশন সম্পাদন করতে সাহায্য করে।

Repository উদাহরণ:

import { EntityRepository, Repository } from "typeorm";
import { User } from "../entities/User";

@EntityRepository(User)
export class UserRepository extends Repository<User> {
  // Custom methods can be added here
  async findUserByEmail(email: string): Promise<User | undefined> {
    return this.findOne({ email });
  }
}

এখানে, UserRepository একটি কাস্টম রিপোজিটরি, যা User Entity এর জন্য কাস্টম কুয়েরি মেথড যোগ করে।

Repositories ফোল্ডার স্ট্রাকচার:

src/
  ├── repositories/
  │   ├── UserRepository.ts
  │   ├── ProductRepository.ts
  │   └── OrderRepository.ts

এখানে, প্রতিটি Entity এর জন্য একটি আলাদা Repository রাখা হয়।


ফোল্ডার ব্যবস্থাপনা কৌশল

ফোল্ডার স্ট্রাকচারটি একটি প্রজেক্টের স্কেল এবং রক্ষণাবেক্ষণ সহজ করার জন্য গুরুত্বপূর্ণ। Entities, Migrations, এবং Repositories এর জন্য একটি পরিষ্কার এবং সুসংহত ফোল্ডার স্ট্রাকচার গঠন করা কোডের মান বজায় রাখতে সহায়তা করে।

সাধারণ TypeORM ফোল্ডার স্ট্রাকচার:

src/
  ├── entities/
  │   ├── User.ts
  │   ├── Product.ts
  │   └── Order.ts
  ├── migrations/
  │   ├── 1628084412629-CreateUserTable.ts
  │   └── 1628084612630-CreateProductTable.ts
  ├── repositories/
  │   ├── UserRepository.ts
  │   ├── ProductRepository.ts
  │   └── OrderRepository.ts
  ├── controllers/
  │   └── UserController.ts
  ├── services/
  │   └── UserService.ts
  ├── app.ts

এখানে:

  • entities/: ডাটাবেস টেবিল প্রতিনিধিত্বকারী ফাইলগুলির জন্য।
  • migrations/: ডাটাবেস স্কিমা পরিবর্তনের জন্য মাইগ্রেশন ফাইল।
  • repositories/: Entity এর জন্য কাস্টম ডাটাবেস অপারেশন পরিচালনা করার জন্য।
  • controllers/: রাউট এবং কন্ট্রোলার ক্লাস।
  • services/: বিজনেস লজিক এবং সার্ভিস ক্লাস।

সারাংশ

TypeORM ব্যবহার করার সময়, Entities, Migrations, এবং Repositories এর জন্য একটি পরিষ্কার ফোল্ডার স্ট্রাকচার তৈরি করা অত্যন্ত গুরুত্বপূর্ণ। এতে করে আপনার প্রজেক্টের স্কেল, রক্ষণাবেক্ষণ এবং টেস্টিং সহজ হবে। Entities ডাটাবেসের টেবিল প্রতিনিধিত্ব করে, Migrations ডাটাবেসের স্কিমা পরিবর্তন করে, এবং Repositories ডাটাবেসে কাস্টম অপারেশন পরিচালনা করতে সহায়তা করে। TypeORM এর মাধ্যমে আপনি মডিউলার, স্কেলেবল এবং পুনঃব্যবহারযোগ্য কোড লিখতে পারবেন যা সিস্টেমের স্থিতিশীলতা এবং কার্যকারিতা উন্নত করবে।

Content added By
Promotion

Are you sure to start over?

Loading...