Kysely for TypeScript: type-safe SQL query builder की पूरी गाइड
1. यह क्या है और इसकी आवश्यकता क्यों है
Kysely (उच्चारण "की-से-ली") TypeScript और Node.js के लिए एक आधुनिक, type-safe SQL query builder है। यह आपको SQL क्वेरी लिखने की अनुमति देता है जिसमें हर चरण पर टाइप सपोर्ट होता है: क्वेरी बनाने से लेकर रिजल्ट पाने तक। पारंपरिक ORM (जैसे TypeORM या Prisma) के विपरीत, Kysely SQL को एब्सट्रैक्ट नहीं करता, बल्कि इसे लिखने के लिए एक सुविधाजनक API प्रदान करता है, साथ ही जनरेट की गई क्वेरी पर पूरा नियंत्रण रखता है। इसका मतलब है कि आप SQL की पूरी शक्ति (JOIN, सबक्वेरी, विंडो फंक्शन, CTE) का उपयोग कर सकते हैं बिना ORM की सीमाओं से जूझे।
Kysely जिस मुख्य समस्या को हल करता है वह है SQL क्वेरी में टाइप सुरक्षा। सामान्य JavaScript/TypeScript कोड में, SQL क्वेरी अक्सर स्ट्रिंग के रूप में लिखी जाती हैं, जिससे रनटाइम एरर होते हैं: कॉलम नामों में गलतियाँ, डेटा टाइप का बेमेल, गलत JOIN। Kysely इस समस्या को कंपाइलेशन स्तर पर हल करता है: यदि आप किसी गैर-मौजूद कॉलम को एक्सेस करने या गलत डेटा टाइप पास करने का प्रयास करते हैं, तो TypeScript ऐप चलने से पहले ही एरर दे देगा। इससे डिबगिंग का समय काफी कम हो जाता है और कोड की विश्वसनीयता बढ़ जाती है।
Kysely उन प्रोजेक्ट्स के लिए आदर्श है जहाँ अधिकतम प्रदर्शन और SQL पर नियंत्रण चाहिए, लेकिन साथ ही स्टैटिक टाइपिंग के सभी लाभ भी चाहिए। यह PostgreSQL, MySQL, SQLite और MSSQL को सपोर्ट करता है, इसमें SQL इंजेक्शन से सुरक्षा (पैरामीटराइज़्ड क्वेरी के माध्यम से), माइग्रेशन सपोर्ट और मौजूदा डेटाबेस स्कीमा से टाइप जनरेट करने की सुविधा है। यह लाइब्रेरी सक्रिय रूप से विकसित हो रही है, इसकी अच्छी डॉक्यूमेंटेशन और कम्युनिटी है।
2. इंस्टॉलेशन
Kysely को npm (या yarn/pnpm) के माध्यम से इंस्टॉल किया जाता है। आपको लाइब्रेरी और अपने डेटाबेस के लिए ड्राइवर इंस्टॉल करना होगा।
# मुख्य पैकेज
npm install kysely
# PostgreSQL के लिए
npm install pg
# MySQL के लिए
npm install mysql2
# SQLite के लिए
npm install better-sqlite3
# MSSQL के लिए
npm install tedious
यदि आप TypeScript का उपयोग कर रहे हैं, तो सुनिश्चित करें कि ड्राइवर के लिए टाइप्स इंस्टॉल हैं (आमतौर पर वे साथ आते हैं)। बेहतर डेवलपमेंट अनुभव के लिए, TypeScript फ़ाइलें चलाने हेतु ts-node इंस्टॉल करने की सलाह दी जाती है:
npm install -D ts-node typescript @types/node
माइग्रेशन के साथ काम करने के लिए अतिरिक्त इंस्टॉल करें:
npm install -D @kysely/cli
3. त्वरित शुरुआत — न्यूनतम कार्यशील उदाहरण
चलिए एक सरल ऐप बनाते हैं जो SQLite डेटाबेस से कनेक्ट होता है, यूज़र्स की टेबल बनाता है और कुछ क्वेरी चलाता है।
पहले अपने डेटाबेस के लिए टाइप्स परिभाषित करें:
// types.ts
export interface User {
id: number;
name: string;
email: string;
age: number | null;
created_at: Date;
}
export interface Database {
users: User;
// यहाँ अन्य टेबल जोड़ सकते हैं
}
अब मुख्य ऐप बनाएँ:
// index.ts
import { Kysely, SqliteDialect } from 'kysely';
import Database from 'better-sqlite3';
import type { Database as MyDatabase } from './types';
// Kysely का इंस्टेंस बनाएँ
const db = new Kysely<MyDatabase>({
dialect: new SqliteDialect({
database: new Database('my_database.db'),
}),
});
async function main() {
// टेबल बनाएँ (यदि मौजूद नहीं है)
await db.schema
.createTable('users')
.ifNotExists()
.addColumn('id', 'integer', (col) => col.primaryKey().autoIncrement())
.addColumn('name', 'varchar(255)', (col) => col.notNull())
.addColumn('email', 'varchar(255)', (col) => col.notNull().unique())
.addColumn('age', 'integer')
.addColumn('created_at', 'datetime', (col) => col.defaultTo('now()'))
.execute();
// डेटा इंसर्ट करें पुस्तकालय में भी
C++ में QR कोड जनरेटर: QR-Code-generator लाइब्रेरी
जावास्क्रिप्ट (Node.js) में ऑब्जेक्ट सीरियलाइज़ेशन: एक संपूर्ण गाइड
PHP के लिए CLI फ्रेमवर्क: Symfony Console और Laravel Zero के साथ कंसोल एप्लिकेशन बनाना
C# (.NET) में PDF जनरेशन: लाइब्रेरीज़ के लिए संपूर्ण गाइड
PHP के लिए Redis क्लाइंट: Predis और PhpRedis – कनेक्शन और उदाहरण