TypeORM এর সাথে Database Configuration
TypeORM হল একটি ORM (Object-Relational Mapping) লাইব্রেরি যা TypeScript এবং JavaScript ডেভেলপমেন্টে ব্যবহৃত হয় এবং বিভিন্ন ডেটাবেসের সাথে কাজ করার জন্য একে ব্যবহার করা যায়। TypeORM এ ডেটাবেস কনফিগারেশন এমনভাবে করা হয় যাতে আপনি আপনার ডেটাবেস সংযোগ এবং সেটিংস এক জায়গায় সহজে কনফিগার করতে পারেন।
ডেটাবেস কনফিগারেশনের জন্য TypeORM প্রধানত ormconfig.json ফাইল বা কনফিগারেশন অবজেক্ট ব্যবহার করে কাজ করে। এই কনফিগারেশনটি entities, migrations, subscribers, host, port ইত্যাদি বিষয়গুলো অন্তর্ভুক্ত করে।
১. ormconfig.json ফাইল
TypeORM ব্যবহার করার জন্য সাধারণভাবে একটি ormconfig.json ফাইল তৈরি করা হয়, যেখানে ডেটাবেসের সমস্ত কনফিগারেশন নির্ধারণ করা থাকে।
ormconfig.json উদাহরণ:
{
"type": "mysql",
"host": "localhost",
"port": 3306,
"username": "root",
"password": "your_password",
"database": "test_db",
"synchronize": true,
"logging": false,
"entities": [
"src/entity/**/*.ts"
],
"migrations": [
"src/migration/**/*.ts"
],
"subscribers": [
"src/subscriber/**/*.ts"
],
"cli": {
"entitiesDir": "src/entity",
"migrationsDir": "src/migration",
"subscribersDir": "src/subscriber"
}
}
এখানে কিছু গুরুত্বপূর্ণ কনফিগারেশন প্যারামিটার:
- type: ডেটাবেসের প্রকার (যেমন,
mysql,postgres,sqlite, ইত্যাদি)। - host: ডেটাবেসের হোস্ট (অথবা IP ঠিকানা)।
- port: ডেটাবেসের পোর্ট নম্বর (যেমন MySQL-এর জন্য সাধারণত 3306)।
- username এবং password: ডেটাবেসের ইউজারনেম এবং পাসওয়ার্ড।
- database: ডেটাবেসের নাম।
- synchronize: যদি এটি
trueথাকে, TypeORM ডেটাবেসের স্কিমা (structure) স্বয়ংক্রিয়ভাবে আপডেট করবে (উত্পাদন পরিবেশে এটা সাধারণতfalseকরা হয়)। - logging: ডেটাবেস অপারেশন লগ করার জন্য।
- entities: আপনার সব entity ফাইলের অবস্থান।
- migrations: মাইগ্রেশন ফাইলের অবস্থান।
- subscribers: সাবস্ক্রাইবার ফাইলের অবস্থান।
২. TypeORM কনফিগারেশন কোড দ্বারা সেটআপ
TypeORM-এ ডেটাবেস কনফিগারেশন কোড দ্বারা কনফিগারও করা যায়। এটি বিশেষত প্রযোজ্য যখন আপনি ডাইনামিক কনফিগারেশন সেট করতে চান, যেমন বিভিন্ন পরিবেশের জন্য ভিন্ন কনফিগারেশন।
TypeORM কনফিগারেশন কোডের উদাহরণ:
import { createConnection } from "typeorm";
import { User } from "./entity/User";
createConnection({
type: "mysql",
host: process.env.DB_HOST || "localhost",
port: 3306,
username: process.env.DB_USER || "root",
password: process.env.DB_PASSWORD || "your_password",
database: process.env.DB_NAME || "test_db",
synchronize: true,
logging: false,
entities: [
User
]
}).then(connection => {
console.log("Connected to the database!");
}).catch(error => console.log(error));
এখানে, কনফিগারেশন ফাইলের পরিবর্তে process.env ব্যবহার করা হয়েছে, যা পরিবেশভিত্তিক ডেটাবেস কনফিগারেশন লোড করতে সাহায্য করে।
৩. Environment Management
ডেভেলপমেন্ট, স্টেজিং এবং প্রোডাকশন পরিবেশের জন্য আলাদা ডেটাবেস কনফিগারেশন থাকতে পারে। এই ক্ষেত্রে, Environment Variables ব্যবহারের মাধ্যমে আপনি ডাইনামিকভাবে কনফিগারেশন সেট করতে পারেন।
dotenv লাইব্রেরি ব্যবহার করে Environment Variables সেট করা:
প্রথমে
dotenvলাইব্রেরি ইনস্টল করুন:npm install dotenvএরপর
.envফাইল তৈরি করুন:DB_HOST=localhost DB_USER=root DB_PASSWORD=your_password DB_NAME=test_db.envফাইলটি লোড করতে dotenv ব্যবহার করুন:
import "dotenv/config"; // Automatically loads the .env file
import { createConnection } from "typeorm";
import { User } from "./entity/User";
createConnection({
type: "mysql",
host: process.env.DB_HOST,
port: 3306,
username: process.env.DB_USER,
password: process.env.DB_PASSWORD,
database: process.env.DB_NAME,
synchronize: true,
logging: false,
entities: [
User
]
}).then(connection => {
console.log("Connected to the database!");
}).catch(error => console.log(error));
এভাবে, ডেভেলপমেন্ট এবং প্রোডাকশন পরিবেশের জন্য আলাদা .env ফাইল তৈরি করে পরিবেশভিত্তিক কনফিগারেশন সেট করা সম্ভব হয়।
৪. Database Configuration with Docker
ডেটাবেস কনফিগারেশন TypeORM-এ Docker কনটেইনারের সাথে ব্যবহারের জন্যও সেট করা যায়। এটি ডেটাবেস সেটআপ এবং কনফিগারেশনকে আরও সহজ করে তোলে।
Docker Compose ব্যবহার করে MySQL কনফিগারেশন:
- একটি
docker-compose.ymlফাইল তৈরি করুন:
version: "3.8"
services:
db:
image: mysql:8
environment:
MYSQL_ROOT_PASSWORD: example
MYSQL_DATABASE: test_db
ports:
- "3306:3306"
volumes:
- db-data:/var/lib/mysql
volumes:
db-data:
- TypeORM কনফিগারেশনকে ডকার কনটেইনারের ডেটাবেসের সাথে সংযোগ করতে সেট করুন:
import { createConnection } from "typeorm";
import { User } from "./entity/User";
createConnection({
type: "mysql",
host: "localhost", // Docker container host
port: 3306,
username: "root",
password: "example",
database: "test_db",
synchronize: true,
logging: false,
entities: [
User
]
}).then(connection => {
console.log("Connected to the MySQL database in Docker!");
}).catch(error => console.log(error));
এখানে, docker-compose ডেটাবেস কনটেইনার চালু করবে এবং TypeORM সেটআপ এর মাধ্যমে আপনি ডেটাবেসের সাথে যোগাযোগ করতে পারবেন।
৫. ডেটাবেস মাইগ্রেশন
TypeORM এ ডেটাবেস স্কিমা পরিবর্তন করার জন্য মাইগ্রেশন ব্যবহৃত হয়। এটি ডেটাবেসের স্কিমা পরিবর্তনের সময় ডেটার স্বচ্ছতা এবং নিরাপত্তা নিশ্চিত করে। মাইগ্রেশন তৈরি এবং প্রয়োগ করতে TypeORM এর CLI (Command Line Interface) ব্যবহার করা হয়।
মাইগ্রেশন কমান্ড উদাহরণ:
মাইগ্রেশন ফাইল তৈরি করুন:
npx typeorm migration:generate -n MigrationNameমাইগ্রেশন চালানোর জন্য:
npx typeorm migration:runপূর্ববর্তী মাইগ্রেশনগুলি রিভার্স করার জন্য:
npx typeorm migration:revert
সারাংশ
TypeORM-এ Database Configuration এবং Environment Management অত্যন্ত গুরুত্বপূর্ণ। আপনি .env ফাইল, Docker, এবং কনফিগারেশন কোড ব্যবহার করে পরিবেশভিত্তিক ডেটাবেস কনফিগারেশন সেট করতে পারেন। TypeORM-এর মাধ্যমে ডেটাবেসের সাথে সহজে সংযোগ স্থাপন করা এবং স্কিমা ম্যানেজমেন্ট করা সম্ভব হয়, যা আপনার অ্যাপ্লিকেশন ডেভেলপমেন্ট প্রক্রিয়াকে আরো দ্রুত এবং কার্যকরী করে তোলে।
Read more