@bhushanpawar/sqldb 1.0.4 → 1.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +69 -69
- package/dist/cli/index.js +5 -5
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/schema-generator.d.ts +3 -3
- package/dist/cli/schema-generator.d.ts.map +1 -1
- package/dist/cli/schema-generator.js +5 -5
- package/dist/cli/schema-generator.js.map +1 -1
- package/dist/client.d.ts +3 -3
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +8 -8
- package/dist/client.js.map +1 -1
- package/dist/index.d.ts +11 -11
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +15 -15
- package/dist/index.js.map +1 -1
- package/dist/query/table-proxy.d.ts +3 -3
- package/dist/query/table-proxy.d.ts.map +1 -1
- package/dist/query/table-proxy.js.map +1 -1
- package/dist/types/client.d.ts +6 -6
- package/dist/types/client.d.ts.map +1 -1
- package/dist/types/config.d.ts +1 -1
- package/dist/types/config.d.ts.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -16,7 +16,7 @@ Stop wasting hours on cache invalidation bugs. Stop paying for database CPU you
|
|
|
16
16
|
|
|
17
17
|
**Most database libraries make you choose:** 🐌 Simple & slow ORM **OR** ⚡ Fast but complex manual caching
|
|
18
18
|
|
|
19
|
-
**
|
|
19
|
+
**SqlDB gives you both.**
|
|
20
20
|
|
|
21
21
|
```typescript
|
|
22
22
|
// Replace this mess...
|
|
@@ -41,7 +41,7 @@ const users = await db.users.findMany({ status });
|
|
|
41
41
|
<tr>
|
|
42
42
|
<td width="50%">
|
|
43
43
|
|
|
44
|
-
**Before
|
|
44
|
+
**Before SqlDB** 😰
|
|
45
45
|
```
|
|
46
46
|
Average response: 250ms
|
|
47
47
|
Database CPU: 85%
|
|
@@ -54,7 +54,7 @@ Developer happiness: 😫
|
|
|
54
54
|
</td>
|
|
55
55
|
<td width="50%">
|
|
56
56
|
|
|
57
|
-
**After
|
|
57
|
+
**After SqlDB** 🎉
|
|
58
58
|
```
|
|
59
59
|
Average response: <1ms (250x faster ⚡)
|
|
60
60
|
Database CPU: 15% (85% reduction)
|
|
@@ -84,10 +84,10 @@ Developer happiness: 😍
|
|
|
84
84
|
## 🎬 See It In Action
|
|
85
85
|
|
|
86
86
|
```typescript
|
|
87
|
-
import {
|
|
87
|
+
import { createSqlDB } from '@bhushanpawar/sqldb';
|
|
88
88
|
|
|
89
89
|
// 1. Initialize (auto-discovers your entire schema)
|
|
90
|
-
const db = await
|
|
90
|
+
const db = await createSqlDB({
|
|
91
91
|
mariadb: { host: 'localhost', user: 'root', password: 'pass', database: 'mydb' },
|
|
92
92
|
redis: { host: 'localhost' }
|
|
93
93
|
});
|
|
@@ -160,7 +160,7 @@ app.post('/users', async (req, res) => {
|
|
|
160
160
|
### The Solution
|
|
161
161
|
|
|
162
162
|
```typescript
|
|
163
|
-
//
|
|
163
|
+
// SqlDB - SIMPLE ✅ FAST ✅ AUTOMATIC ✅
|
|
164
164
|
app.get('/users', async (req, res) => {
|
|
165
165
|
const users = await db.users.findMany(); // 1ms (cached) after first request
|
|
166
166
|
res.json(users);
|
|
@@ -194,7 +194,7 @@ Updates to `users` automatically invalidate `posts` and `comments` caches. **Fol
|
|
|
194
194
|
// Update a user
|
|
195
195
|
await db.users.updateById(1, { name: 'Jane' });
|
|
196
196
|
|
|
197
|
-
//
|
|
197
|
+
// SqlDB automatically clears:
|
|
198
198
|
// ✓ users:* cache
|
|
199
199
|
// ✓ posts:* cache (has user_id FK)
|
|
200
200
|
// ✓ comments:* cache (has post_id FK → user_id FK)
|
|
@@ -253,8 +253,8 @@ interface User {
|
|
|
253
253
|
status: 'active' | 'inactive';
|
|
254
254
|
}
|
|
255
255
|
|
|
256
|
-
type MyDB =
|
|
257
|
-
const db = await
|
|
256
|
+
type MyDB = SqlDBWithTables<{ users: User }>;
|
|
257
|
+
const db = await createSqlDB(config) as MyDB;
|
|
258
258
|
|
|
259
259
|
// Full autocomplete and type checking ✨
|
|
260
260
|
const users = await db.users.findMany(); // Type: User[]
|
|
@@ -265,7 +265,7 @@ await db.users.updateById(1, { invalid: 'field' }); // ❌ TypeScript error
|
|
|
265
265
|
### 🔗 **Zero Configuration** - Works Out of the Box
|
|
266
266
|
|
|
267
267
|
```typescript
|
|
268
|
-
const db = await
|
|
268
|
+
const db = await createSqlDB({
|
|
269
269
|
mariadb: { host: 'localhost', user: 'root', password: 'pass', database: 'mydb' },
|
|
270
270
|
redis: { host: 'localhost' }
|
|
271
271
|
});
|
|
@@ -285,7 +285,7 @@ const db = await createSmartDB({
|
|
|
285
285
|
|
|
286
286
|
## Real-World Performance
|
|
287
287
|
|
|
288
|
-
**Before
|
|
288
|
+
**Before SqlDB:**
|
|
289
289
|
```
|
|
290
290
|
Average API response time: 250ms
|
|
291
291
|
Database load: 85% CPU
|
|
@@ -294,7 +294,7 @@ Cache hit rate: 0%
|
|
|
294
294
|
Lines of caching code: 500+
|
|
295
295
|
```
|
|
296
296
|
|
|
297
|
-
**After
|
|
297
|
+
**After SqlDB:**
|
|
298
298
|
```
|
|
299
299
|
Average API response time: 12ms (20x faster ⚡)
|
|
300
300
|
Database load: 15% CPU (85% reduction)
|
|
@@ -305,7 +305,7 @@ Lines of caching code: 0
|
|
|
305
305
|
|
|
306
306
|
## Quick Comparison
|
|
307
307
|
|
|
308
|
-
| Feature | Traditional ORM | Manual Cache | **
|
|
308
|
+
| Feature | Traditional ORM | Manual Cache | **SqlDB** |
|
|
309
309
|
|---------|----------------|--------------|-------------|
|
|
310
310
|
| Query Speed | 🐌 200ms | ⚡ 2ms | ⚡ **<1ms** |
|
|
311
311
|
| Auto-Caching | ❌ | ❌ | ✅ **Built-in** |
|
|
@@ -351,9 +351,9 @@ npm install @bhushanpawar/sqldb mariadb redis
|
|
|
351
351
|
|
|
352
352
|
### 2. Initialize
|
|
353
353
|
```typescript
|
|
354
|
-
import {
|
|
354
|
+
import { createSqlDB } from '@bhushanpawar/sqldb';
|
|
355
355
|
|
|
356
|
-
const db = await
|
|
356
|
+
const db = await createSqlDB({
|
|
357
357
|
mariadb: { host: 'localhost', user: 'root', password: 'pass', database: 'mydb' },
|
|
358
358
|
redis: { host: 'localhost' }
|
|
359
359
|
});
|
|
@@ -383,9 +383,9 @@ Lines of code: 3 (vs 50+)
|
|
|
383
383
|
Here's a more complete example with all the bells and whistles:
|
|
384
384
|
|
|
385
385
|
```typescript
|
|
386
|
-
import {
|
|
386
|
+
import { createSqlDB } from '@bhushanpawar/sqldb';
|
|
387
387
|
|
|
388
|
-
const db = await
|
|
388
|
+
const db = await createSqlDB({
|
|
389
389
|
// Database connection
|
|
390
390
|
mariadb: {
|
|
391
391
|
host: 'localhost',
|
|
@@ -492,19 +492,19 @@ await db.close();
|
|
|
492
492
|
For production applications, use singleton mode to share a single connection pool:
|
|
493
493
|
|
|
494
494
|
```typescript
|
|
495
|
-
import {
|
|
495
|
+
import { createSqlDB, getSqlDB } from '@bhushanpawar/sqldb';
|
|
496
496
|
|
|
497
497
|
// Initialize once at app startup
|
|
498
|
-
const db = await
|
|
498
|
+
const db = await createSqlDB({
|
|
499
499
|
mariadb: { /* config */ },
|
|
500
500
|
redis: { /* config */ },
|
|
501
501
|
cache: { enabled: true },
|
|
502
502
|
}, { singleton: true }); // Enable singleton mode
|
|
503
503
|
|
|
504
504
|
// Access anywhere in your app
|
|
505
|
-
import {
|
|
505
|
+
import { getSqlDB } from '@bhushanpawar/sqldb';
|
|
506
506
|
|
|
507
|
-
const db =
|
|
507
|
+
const db = getSqlDB(); // Returns the same instance
|
|
508
508
|
const users = db.getTableOperations('users');
|
|
509
509
|
```
|
|
510
510
|
|
|
@@ -515,7 +515,7 @@ See [SINGLETON_PATTERN.md](./docs/SINGLETON_PATTERN.md) for detailed usage.
|
|
|
515
515
|
Access tables directly as properties with full type safety:
|
|
516
516
|
|
|
517
517
|
```typescript
|
|
518
|
-
import {
|
|
518
|
+
import { createSqlDB, SqlDBWithTables } from '@bhushanpawar/sqldb';
|
|
519
519
|
|
|
520
520
|
// Define your schema
|
|
521
521
|
interface MySchema {
|
|
@@ -523,9 +523,9 @@ interface MySchema {
|
|
|
523
523
|
orders: { id: number; user_id: number; total: number };
|
|
524
524
|
}
|
|
525
525
|
|
|
526
|
-
type MyDB =
|
|
526
|
+
type MyDB = SqlDBWithTables<MySchema>;
|
|
527
527
|
|
|
528
|
-
const db = await
|
|
528
|
+
const db = await createSqlDB(config) as MyDB;
|
|
529
529
|
|
|
530
530
|
// Clean, typed access
|
|
531
531
|
const users = await db.users.findMany(); // Type: MySchema['users'][]
|
|
@@ -584,10 +584,10 @@ The raw query cache:
|
|
|
584
584
|
|
|
585
585
|
### Schema Discovery
|
|
586
586
|
|
|
587
|
-
|
|
587
|
+
SqlDB automatically discovers your database schema on initialization:
|
|
588
588
|
|
|
589
589
|
```typescript
|
|
590
|
-
const db = await
|
|
590
|
+
const db = await createSqlDB({
|
|
591
591
|
discovery: {
|
|
592
592
|
autoDiscover: true,
|
|
593
593
|
includedTables: ['users', 'posts', 'comments'], // Optional: specific tables
|
|
@@ -607,7 +607,7 @@ const deps = graph.getDependencies('users'); // Tables that depend on users
|
|
|
607
607
|
|
|
608
608
|
### Relationship Mapping
|
|
609
609
|
|
|
610
|
-
|
|
610
|
+
SqlDB automatically maps foreign key relationships:
|
|
611
611
|
|
|
612
612
|
```typescript
|
|
613
613
|
// Schema example:
|
|
@@ -625,7 +625,7 @@ await users.updateById(1, { name: 'Jane' });
|
|
|
625
625
|
|
|
626
626
|
```typescript
|
|
627
627
|
// 1. Automatic invalidation on write (recommended)
|
|
628
|
-
await
|
|
628
|
+
await createSqlDB({
|
|
629
629
|
cache: {
|
|
630
630
|
invalidateOnWrite: true,
|
|
631
631
|
cascadeInvalidation: true, // Invalidate related tables
|
|
@@ -650,9 +650,9 @@ await cacheManager.clear();
|
|
|
650
650
|
### Complete Configuration Example
|
|
651
651
|
|
|
652
652
|
```typescript
|
|
653
|
-
import {
|
|
653
|
+
import { createSqlDB, SqlDBConfig } from '@bhushanpawar/sqldb';
|
|
654
654
|
|
|
655
|
-
const config:
|
|
655
|
+
const config: SqlDBConfig = {
|
|
656
656
|
// MariaDB connection
|
|
657
657
|
mariadb: {
|
|
658
658
|
host: 'localhost',
|
|
@@ -701,7 +701,7 @@ const config: SmartDBConfig = {
|
|
|
701
701
|
},
|
|
702
702
|
};
|
|
703
703
|
|
|
704
|
-
const db = await
|
|
704
|
+
const db = await createSqlDB(config);
|
|
705
705
|
```
|
|
706
706
|
|
|
707
707
|
### Configuration Options
|
|
@@ -918,7 +918,7 @@ await provider.warmCacheWithRelations({}, {
|
|
|
918
918
|
|
|
919
919
|
**Example - Warm on Startup:**
|
|
920
920
|
```typescript
|
|
921
|
-
async function warmCacheOnStartup(db:
|
|
921
|
+
async function warmCacheOnStartup(db: SqlDBClient) {
|
|
922
922
|
// Warm most frequently accessed tables with their relations
|
|
923
923
|
const provider = db.getTableOperations('provider');
|
|
924
924
|
const orders = db.getTableOperations('orders');
|
|
@@ -1000,7 +1000,7 @@ interface QueryMetadata {
|
|
|
1000
1000
|
// When you update a user:
|
|
1001
1001
|
await users.updateById(1, { name: 'Updated Name' });
|
|
1002
1002
|
|
|
1003
|
-
//
|
|
1003
|
+
// SqlDB invalidates:
|
|
1004
1004
|
// 1. users:* (direct table)
|
|
1005
1005
|
// 2. posts:* (depends on users via user_id)
|
|
1006
1006
|
// 3. comments:* (depends on posts via post_id)
|
|
@@ -1137,10 +1137,10 @@ console.log(`Total queries executed: ${queries.length}`); // Should be 1 if cach
|
|
|
1137
1137
|
|
|
1138
1138
|
## API Reference
|
|
1139
1139
|
|
|
1140
|
-
###
|
|
1140
|
+
### SqlDBClient
|
|
1141
1141
|
|
|
1142
1142
|
```typescript
|
|
1143
|
-
class
|
|
1143
|
+
class SqlDBClient {
|
|
1144
1144
|
// Initialize client
|
|
1145
1145
|
async initialize(): Promise<void>;
|
|
1146
1146
|
|
|
@@ -1275,9 +1275,9 @@ try {
|
|
|
1275
1275
|
### After (@bhushanpawar/sqldb) - 5 lines with superpowers
|
|
1276
1276
|
|
|
1277
1277
|
```typescript
|
|
1278
|
-
import {
|
|
1278
|
+
import { createSqlDB } from '@bhushanpawar/sqldb';
|
|
1279
1279
|
|
|
1280
|
-
const db = await
|
|
1280
|
+
const db = await createSqlDB({
|
|
1281
1281
|
mariadb: { host: 'localhost', user: 'root', password: 'password', database: 'mydb' },
|
|
1282
1282
|
redis: { host: 'localhost' }
|
|
1283
1283
|
});
|
|
@@ -1308,7 +1308,7 @@ const count = await db.users.count({ status: 'active' });
|
|
|
1308
1308
|
|
|
1309
1309
|
- [ ] Install packages: `npm install @bhushanpawar/sqldb mariadb redis`
|
|
1310
1310
|
- [ ] Set up Redis (if not already running)
|
|
1311
|
-
- [ ] Replace `mariadb.createPool()` with `
|
|
1311
|
+
- [ ] Replace `mariadb.createPool()` with `createSqlDB()`
|
|
1312
1312
|
- [ ] Replace `conn.query()` with `db.table.findMany()`, `findById()`, etc.
|
|
1313
1313
|
- [ ] Remove manual connection management (`getConnection()`, `release()`)
|
|
1314
1314
|
- [ ] Remove manual caching logic (if any)
|
|
@@ -1325,8 +1325,8 @@ Real-world results from production deployments:
|
|
|
1325
1325
|
```
|
|
1326
1326
|
Database Query: 200ms 🐌
|
|
1327
1327
|
Manual Cache: 15ms ⚠️
|
|
1328
|
-
|
|
1329
|
-
|
|
1328
|
+
SqlDB (cold): 45ms ✅
|
|
1329
|
+
SqlDB (warm): 0.8ms ⚡ 250x faster!
|
|
1330
1330
|
```
|
|
1331
1331
|
|
|
1332
1332
|
### Metrics That Matter
|
|
@@ -1381,13 +1381,13 @@ This section provides examples from simple to complex, helping you get started q
|
|
|
1381
1381
|
|
|
1382
1382
|
### 1. Hello World - Minimal Setup
|
|
1383
1383
|
|
|
1384
|
-
The simplest way to get started with
|
|
1384
|
+
The simplest way to get started with SqlDB:
|
|
1385
1385
|
|
|
1386
1386
|
```typescript
|
|
1387
|
-
import {
|
|
1387
|
+
import { createSqlDB } from '@bhushanpawar/sqldb';
|
|
1388
1388
|
|
|
1389
1389
|
// Initialize with minimal config
|
|
1390
|
-
const db = await
|
|
1390
|
+
const db = await createSqlDB({
|
|
1391
1391
|
mariadb: {
|
|
1392
1392
|
host: 'localhost',
|
|
1393
1393
|
user: 'root',
|
|
@@ -1419,9 +1419,9 @@ await db.close();
|
|
|
1419
1419
|
Learn all the basic operations with caching:
|
|
1420
1420
|
|
|
1421
1421
|
```typescript
|
|
1422
|
-
import {
|
|
1422
|
+
import { createSqlDB } from '@bhushanpawar/sqldb';
|
|
1423
1423
|
|
|
1424
|
-
const db = await
|
|
1424
|
+
const db = await createSqlDB({
|
|
1425
1425
|
mariadb: { host: 'localhost', user: 'root', password: 'password', database: 'mydb' },
|
|
1426
1426
|
redis: { host: 'localhost' },
|
|
1427
1427
|
cache: {
|
|
@@ -1472,7 +1472,7 @@ await db.close();
|
|
|
1472
1472
|
Add full type safety to your queries:
|
|
1473
1473
|
|
|
1474
1474
|
```typescript
|
|
1475
|
-
import {
|
|
1475
|
+
import { createSqlDB, SqlDBWithTables } from '@bhushanpawar/sqldb';
|
|
1476
1476
|
|
|
1477
1477
|
// Define your schema
|
|
1478
1478
|
interface User {
|
|
@@ -1496,8 +1496,8 @@ interface MySchema {
|
|
|
1496
1496
|
}
|
|
1497
1497
|
|
|
1498
1498
|
// Create typed DB instance
|
|
1499
|
-
type MyDB =
|
|
1500
|
-
const db = await
|
|
1499
|
+
type MyDB = SqlDBWithTables<MySchema>;
|
|
1500
|
+
const db = await createSqlDB(config) as MyDB;
|
|
1501
1501
|
|
|
1502
1502
|
// Full type safety!
|
|
1503
1503
|
const users = await db.users.findMany(); // Type: User[]
|
|
@@ -1522,9 +1522,9 @@ await db.users.updateById(1, { status: 'verified' }); // Type-checked!
|
|
|
1522
1522
|
Track query performance with correlation IDs:
|
|
1523
1523
|
|
|
1524
1524
|
```typescript
|
|
1525
|
-
import {
|
|
1525
|
+
import { createSqlDB, generateQueryId } from '@bhushanpawar/sqldb';
|
|
1526
1526
|
|
|
1527
|
-
const db = await
|
|
1527
|
+
const db = await createSqlDB({
|
|
1528
1528
|
mariadb: { /* config */ },
|
|
1529
1529
|
redis: { /* config */ },
|
|
1530
1530
|
logging: { level: 'info' },
|
|
@@ -1581,9 +1581,9 @@ db.clearQueries(correlationId);
|
|
|
1581
1581
|
Monitor all database queries with detailed logging:
|
|
1582
1582
|
|
|
1583
1583
|
```typescript
|
|
1584
|
-
import {
|
|
1584
|
+
import { createSqlDB } from '@bhushanpawar/sqldb';
|
|
1585
1585
|
|
|
1586
|
-
const db = await
|
|
1586
|
+
const db = await createSqlDB({
|
|
1587
1587
|
mariadb: {
|
|
1588
1588
|
host: 'localhost',
|
|
1589
1589
|
user: 'root',
|
|
@@ -1632,7 +1632,7 @@ Automatic cascade invalidation based on foreign keys:
|
|
|
1632
1632
|
// posts (id, user_id, title) ← FK to users
|
|
1633
1633
|
// comments (id, post_id, content) ← FK to posts
|
|
1634
1634
|
|
|
1635
|
-
const db = await
|
|
1635
|
+
const db = await createSqlDB({
|
|
1636
1636
|
mariadb: { /* config */ },
|
|
1637
1637
|
redis: { /* config */ },
|
|
1638
1638
|
cache: {
|
|
@@ -1648,7 +1648,7 @@ const db = await createSmartDB({
|
|
|
1648
1648
|
// When you update a user...
|
|
1649
1649
|
await (db as any).users.updateById(1, { name: 'Updated Name' });
|
|
1650
1650
|
|
|
1651
|
-
//
|
|
1651
|
+
// SqlDB automatically invalidates:
|
|
1652
1652
|
// 1. users:* (direct table)
|
|
1653
1653
|
// 2. posts:* (depends on users via user_id)
|
|
1654
1654
|
// 3. comments:* (depends on posts via post_id)
|
|
@@ -1674,14 +1674,14 @@ await invalidationManager.invalidateTable('users', { cascade: true });
|
|
|
1674
1674
|
|
|
1675
1675
|
### 7. Singleton Pattern for Production
|
|
1676
1676
|
|
|
1677
|
-
Share a single
|
|
1677
|
+
Share a single SqlDB instance across your entire application:
|
|
1678
1678
|
|
|
1679
1679
|
```typescript
|
|
1680
1680
|
// db.ts - Initialize once at app startup
|
|
1681
|
-
import {
|
|
1681
|
+
import { createSqlDB } from '@bhushanpawar/sqldb';
|
|
1682
1682
|
|
|
1683
1683
|
export const initializeDB = async () => {
|
|
1684
|
-
const db = await
|
|
1684
|
+
const db = await createSqlDB({
|
|
1685
1685
|
mariadb: { /* config */ },
|
|
1686
1686
|
redis: { /* config */ },
|
|
1687
1687
|
cache: { enabled: true },
|
|
@@ -1697,18 +1697,18 @@ const db = await initializeDB();
|
|
|
1697
1697
|
console.log('Database initialized');
|
|
1698
1698
|
|
|
1699
1699
|
// userController.ts - Access anywhere
|
|
1700
|
-
import {
|
|
1700
|
+
import { getSqlDB } from '@bhushanpawar/sqldb';
|
|
1701
1701
|
|
|
1702
1702
|
export const getUsers = async () => {
|
|
1703
|
-
const db =
|
|
1703
|
+
const db = getSqlDB(); // Returns the same instance
|
|
1704
1704
|
return await (db as any).users.findMany();
|
|
1705
1705
|
};
|
|
1706
1706
|
|
|
1707
1707
|
// orderController.ts - Access anywhere
|
|
1708
|
-
import {
|
|
1708
|
+
import { getSqlDB } from '@bhushanpawar/sqldb';
|
|
1709
1709
|
|
|
1710
1710
|
export const getOrders = async (userId: number) => {
|
|
1711
|
-
const db =
|
|
1711
|
+
const db = getSqlDB(); // Same instance
|
|
1712
1712
|
return await (db as any).orders.findMany({ user_id: userId });
|
|
1713
1713
|
};
|
|
1714
1714
|
```
|
|
@@ -1728,9 +1728,9 @@ export const getOrders = async (userId: number) => {
|
|
|
1728
1728
|
Pre-warm cache on startup for frequently accessed queries:
|
|
1729
1729
|
|
|
1730
1730
|
```typescript
|
|
1731
|
-
import {
|
|
1731
|
+
import { createSqlDB } from '@bhushanpawar/sqldb';
|
|
1732
1732
|
|
|
1733
|
-
const db = await
|
|
1733
|
+
const db = await createSqlDB({
|
|
1734
1734
|
mariadb: { /* config */ },
|
|
1735
1735
|
redis: { /* config */ },
|
|
1736
1736
|
cache: { enabled: true },
|
|
@@ -1776,9 +1776,9 @@ const user = await (db as any).users.findById(orders[0].user_id);
|
|
|
1776
1776
|
Automatically warm cache for your hottest queries:
|
|
1777
1777
|
|
|
1778
1778
|
```typescript
|
|
1779
|
-
import {
|
|
1779
|
+
import { createSqlDB } from '@bhushanpawar/sqldb';
|
|
1780
1780
|
|
|
1781
|
-
const db = await
|
|
1781
|
+
const db = await createSqlDB({
|
|
1782
1782
|
mariadb: { /* config */ },
|
|
1783
1783
|
redis: { /* config */ },
|
|
1784
1784
|
cache: { enabled: true },
|
|
@@ -1854,10 +1854,10 @@ console.log('Manual warming:', manualStats.queriesWarmed, 'queries');
|
|
|
1854
1854
|
A real-world production setup with all features:
|
|
1855
1855
|
|
|
1856
1856
|
```typescript
|
|
1857
|
-
import {
|
|
1857
|
+
import { createSqlDB, generateQueryId } from '@bhushanpawar/sqldb';
|
|
1858
1858
|
|
|
1859
1859
|
// Production configuration
|
|
1860
|
-
const db = await
|
|
1860
|
+
const db = await createSqlDB({
|
|
1861
1861
|
mariadb: {
|
|
1862
1862
|
host: process.env.DB_HOST,
|
|
1863
1863
|
port: parseInt(process.env.DB_PORT || '3306'),
|
|
@@ -2002,7 +2002,7 @@ For complete working examples, see the [examples](./examples) directory:
|
|
|
2002
2002
|
## Why You'll Love This
|
|
2003
2003
|
|
|
2004
2004
|
### Developer Experience
|
|
2005
|
-
- ✅ **Zero Learning Curve** - If you know SQL, you know
|
|
2005
|
+
- ✅ **Zero Learning Curve** - If you know SQL, you know SqlDB
|
|
2006
2006
|
- ✅ **TypeScript First** - Full type safety with autocomplete
|
|
2007
2007
|
- ✅ **Beautiful Logs** - See performance at a glance
|
|
2008
2008
|
- ✅ **Debugging Tools** - Find slow queries in seconds
|
|
@@ -2086,7 +2086,7 @@ npm test
|
|
|
2086
2086
|
- 📧 **Email**: For private inquiries
|
|
2087
2087
|
|
|
2088
2088
|
### Show Your Support
|
|
2089
|
-
If
|
|
2089
|
+
If SqlDB saves you time and money:
|
|
2090
2090
|
- ⭐ **Star this repo** on GitHub
|
|
2091
2091
|
- 🐦 **Tweet** about your experience
|
|
2092
2092
|
- 📝 **Write** a blog post
|
package/dist/cli/index.js
CHANGED
|
@@ -100,7 +100,7 @@ async function generateSchema(options = {}) {
|
|
|
100
100
|
keyPrefix: 'schema_gen:',
|
|
101
101
|
};
|
|
102
102
|
}
|
|
103
|
-
const db = await (0, index_1.
|
|
103
|
+
const db = await (0, index_1.createSqlDB)(config);
|
|
104
104
|
const tables = db.getDiscoveredTables();
|
|
105
105
|
console.log(`✅ Discovered ${tables.length} tables\n`);
|
|
106
106
|
// Generate schema
|
|
@@ -128,10 +128,10 @@ async function generateSchema(options = {}) {
|
|
|
128
128
|
// Show usage
|
|
129
129
|
console.log('🚀 Next steps:\n');
|
|
130
130
|
console.log('1. Import and use in your code:\n');
|
|
131
|
-
console.log(' import {
|
|
131
|
+
console.log(' import { createSqlDB, SqlDBWithTables } from "@bhushanpawar/sqldb";');
|
|
132
132
|
console.log(' import { DatabaseSchema } from "./db-schema";\n');
|
|
133
|
-
console.log(' type DB =
|
|
134
|
-
console.log(' const db = await
|
|
133
|
+
console.log(' type DB = SqlDBWithTables<DatabaseSchema>;');
|
|
134
|
+
console.log(' const db = await createSqlDB(config) as DB;\n');
|
|
135
135
|
console.log(' // Full type safety!');
|
|
136
136
|
const sampleTables = tables.slice(0, 3);
|
|
137
137
|
for (const table of sampleTables) {
|
|
@@ -150,7 +150,7 @@ async function main() {
|
|
|
150
150
|
const command = args[0];
|
|
151
151
|
if (!command || command === '--help' || command === '-h') {
|
|
152
152
|
console.log('');
|
|
153
|
-
console.log('
|
|
153
|
+
console.log('SqlDB CLI - Database Schema Generator');
|
|
154
154
|
console.log('');
|
|
155
155
|
console.log('Usage:');
|
|
156
156
|
console.log(' npx @bhushanpawar/sqldb --generate-schema [options]');
|
package/dist/cli/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,mCAAsC;AACtC,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { SqlDBClient } from '../client';
|
|
2
2
|
export interface GenerateSchemaOptions {
|
|
3
3
|
outputPath?: string;
|
|
4
4
|
interfaceName?: string;
|
|
@@ -7,7 +7,7 @@ export interface GenerateSchemaOptions {
|
|
|
7
7
|
}
|
|
8
8
|
export declare class SchemaGenerator {
|
|
9
9
|
private client;
|
|
10
|
-
constructor(client:
|
|
10
|
+
constructor(client: SqlDBClient);
|
|
11
11
|
/**
|
|
12
12
|
* Generate TypeScript interface from discovered schema
|
|
13
13
|
*/
|
|
@@ -17,7 +17,7 @@ export declare class SchemaGenerator {
|
|
|
17
17
|
*/
|
|
18
18
|
private mapSQLTypeToTypeScript;
|
|
19
19
|
/**
|
|
20
|
-
* Generate schema with
|
|
20
|
+
* Generate schema with SqlDBWithTables type
|
|
21
21
|
*/
|
|
22
22
|
generateCompleteSchema(options?: GenerateSchemaOptions): string;
|
|
23
23
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema-generator.d.ts","sourceRoot":"","sources":["../../src/cli/schema-generator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"schema-generator.d.ts","sourceRoot":"","sources":["../../src/cli/schema-generator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAGxC,MAAM,WAAW,qBAAqB;IACpC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,qBAAa,eAAe;IAC1B,OAAO,CAAC,MAAM,CAAc;gBAEhB,MAAM,EAAE,WAAW;IAI/B;;OAEG;IACH,2BAA2B,CAAC,OAAO,GAAE,qBAA0B,GAAG,MAAM;IA8FxE;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAwC9B;;OAEG;IACH,sBAAsB,CAAC,OAAO,GAAE,qBAA0B,GAAG,MAAM;IAenE;;OAEG;IACH,mBAAmB,CAAC,OAAO,GAAE,qBAA0B,GAAG,MAAM;CA0BjE"}
|
|
@@ -115,18 +115,18 @@ class SchemaGenerator {
|
|
|
115
115
|
return 'any';
|
|
116
116
|
}
|
|
117
117
|
/**
|
|
118
|
-
* Generate schema with
|
|
118
|
+
* Generate schema with SqlDBWithTables type
|
|
119
119
|
*/
|
|
120
120
|
generateCompleteSchema(options = {}) {
|
|
121
121
|
const interfaceName = options.interfaceName || 'DatabaseSchema';
|
|
122
122
|
const interfaceCode = this.generateTypeScriptInterface(options);
|
|
123
123
|
const lines = [];
|
|
124
|
-
lines.push("import {
|
|
124
|
+
lines.push("import { SqlDBWithTables } from '@bhushanpawar/sqldb';");
|
|
125
125
|
lines.push('');
|
|
126
126
|
lines.push(interfaceCode);
|
|
127
127
|
lines.push('');
|
|
128
128
|
lines.push(`// Type for your database client`);
|
|
129
|
-
lines.push(`export type DB =
|
|
129
|
+
lines.push(`export type DB = SqlDBWithTables<${interfaceName}>;`);
|
|
130
130
|
return lines.join('\n');
|
|
131
131
|
}
|
|
132
132
|
/**
|
|
@@ -140,10 +140,10 @@ class SchemaGenerator {
|
|
|
140
140
|
lines.push('/**');
|
|
141
141
|
lines.push(' * Usage example:');
|
|
142
142
|
lines.push(' *');
|
|
143
|
-
lines.push(" * import {
|
|
143
|
+
lines.push(" * import { createSqlDB } from '@bhushanpawar/sqldb';");
|
|
144
144
|
lines.push(' * import { DB } from "./db-schema";');
|
|
145
145
|
lines.push(' *');
|
|
146
|
-
lines.push(' * const db = await
|
|
146
|
+
lines.push(' * const db = await createSqlDB(config) as DB;');
|
|
147
147
|
lines.push(' *');
|
|
148
148
|
lines.push(' * // Now you have full type safety:');
|
|
149
149
|
// Add example for first few tables
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema-generator.js","sourceRoot":"","sources":["../../src/cli/schema-generator.ts"],"names":[],"mappings":";;;AAUA,MAAa,eAAe;IAG1B,YAAY,
|
|
1
|
+
{"version":3,"file":"schema-generator.js","sourceRoot":"","sources":["../../src/cli/schema-generator.ts"],"names":[],"mappings":"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"}
|
package/dist/client.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { SqlDBConfig } from './types/config';
|
|
2
2
|
import { TableOperations, QueryMetadata } from './types/query';
|
|
3
3
|
import { TableSchema } from './types/schema';
|
|
4
4
|
import { DependencyGraph } from './discovery/dependency-graph';
|
|
@@ -7,7 +7,7 @@ import { InvalidationManager } from './cache/invalidation';
|
|
|
7
7
|
import { HooksManager } from './hooks/hooks-manager';
|
|
8
8
|
import { InMemoryQueryTracker } from './query/query-tracker';
|
|
9
9
|
import { WarmingStats } from './types/warming';
|
|
10
|
-
export declare class
|
|
10
|
+
export declare class SqlDBClient {
|
|
11
11
|
private config;
|
|
12
12
|
private dbManager;
|
|
13
13
|
private redisManager;
|
|
@@ -23,7 +23,7 @@ export declare class SmartDBClient {
|
|
|
23
23
|
private initialized;
|
|
24
24
|
private discoveredTables;
|
|
25
25
|
private tableSchemas;
|
|
26
|
-
constructor(config:
|
|
26
|
+
constructor(config: SqlDBConfig);
|
|
27
27
|
initialize(): Promise<void>;
|
|
28
28
|
private discoverSchema;
|
|
29
29
|
refreshSchema(): Promise<void>;
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EAKZ,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAK7C,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAI3D,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAG7D,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,SAAS,CAA4B;IAC7C,OAAO,CAAC,YAAY,CAA0B;IAC9C,OAAO,CAAC,YAAY,CAAgB;IACpC,OAAO,CAAC,mBAAmB,CAAuB;IAClD,OAAO,CAAC,eAAe,CAAmB;IAC1C,OAAO,CAAC,YAAY,CAAgB;IACpC,OAAO,CAAC,iBAAiB,CAAqB;IACvC,KAAK,EAAG,YAAY,CAAC;IACrB,YAAY,EAAE,oBAAoB,CAAC;IAG1C,OAAO,CAAC,YAAY,CAAC,CAAoB;IACzC,OAAO,CAAC,cAAc,CAAC,CAAqB;IAE5C,OAAO,CAAC,WAAW,CAAkB;IACrC,OAAO,CAAC,gBAAgB,CAA0B;IAClD,OAAO,CAAC,YAAY,CAAuC;gBAE/C,MAAM,EAAE,WAAW;IAWzB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;YAwEnB,cAAc;IA6BtB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAYpC,kBAAkB,CAAC,CAAC,GAAG,GAAG,EAAE,SAAS,EAAE,MAAM,GAAG,eAAe,CAAC,CAAC,CAAC;IAiBlE,eAAe,IAAI,YAAY;IAI/B,sBAAsB,IAAI,mBAAmB;IAI7C,kBAAkB,IAAI,eAAe;IAIrC,mBAAmB,IAAI,MAAM,EAAE;IAI/B,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS;IAI1D,UAAU,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,aAAa,EAAE;IAInD,YAAY,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI;IAIpC,WAAW,IAAI,OAAO,CAAC;QAC3B,OAAO,EAAE,OAAO,CAAC;QACjB,KAAK,EAAE,OAAO,CAAC;QACf,OAAO,EAAE,OAAO,CAAC;KAClB,CAAC;IAWF;;OAEG;IACH,cAAc,CAAC,OAAO,CAAC,EAAE;QACvB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,eAAe,CAAC,EAAE,OAAO,CAAC;QAC1B,cAAc,CAAC,EAAE,OAAO,CAAC;QACzB,WAAW,CAAC,EAAE,OAAO,CAAC;KACvB,GAAG,MAAM;IAWJ,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAiB5B;;OAEG;IACH,eAAe,IAAI,YAAY,GAAG,IAAI;IAItC;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC;IAOpD;;OAEG;IACG,oBAAoB,IAAI,OAAO,CAAC;QACpC,YAAY,EAAE,MAAM,CAAC;QACrB,aAAa,EAAE,MAAM,CAAC;QACtB,UAAU,EAAE,MAAM,CAAC;QACnB,cAAc,EAAE,MAAM,CAAC;KACxB,GAAG,IAAI,CAAC;IAOT,OAAO,CAAC,GAAG;CAKZ"}
|
package/dist/client.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.SqlDBClient = void 0;
|
|
4
4
|
const config_1 = require("./types/config");
|
|
5
5
|
const mariadb_1 = require("./connection/mariadb");
|
|
6
6
|
const redis_1 = require("./connection/redis");
|
|
@@ -16,7 +16,7 @@ const hooks_manager_1 = require("./hooks/hooks-manager");
|
|
|
16
16
|
const query_tracker_1 = require("./query/query-tracker");
|
|
17
17
|
const query_stats_tracker_1 = require("./warming/query-stats-tracker");
|
|
18
18
|
const auto_warming_manager_1 = require("./warming/auto-warming-manager");
|
|
19
|
-
class
|
|
19
|
+
class SqlDBClient {
|
|
20
20
|
constructor(config) {
|
|
21
21
|
this.initialized = false;
|
|
22
22
|
this.discoveredTables = new Set();
|
|
@@ -34,7 +34,7 @@ class SmartDBClient {
|
|
|
34
34
|
if (this.initialized) {
|
|
35
35
|
return;
|
|
36
36
|
}
|
|
37
|
-
this.log('info', 'Initializing
|
|
37
|
+
this.log('info', 'Initializing SqlDBClient...');
|
|
38
38
|
// Initialize connection managers
|
|
39
39
|
this.dbManager = new mariadb_1.MariaDBConnectionManager(this.config.mariadb, this.queryTracker);
|
|
40
40
|
await this.dbManager.connect();
|
|
@@ -66,7 +66,7 @@ class SmartDBClient {
|
|
|
66
66
|
this.log('info', 'Auto-warming enabled');
|
|
67
67
|
}
|
|
68
68
|
this.initialized = true;
|
|
69
|
-
this.log('info', '
|
|
69
|
+
this.log('info', 'SqlDBClient initialized successfully');
|
|
70
70
|
}
|
|
71
71
|
async discoverSchema() {
|
|
72
72
|
this.log('info', 'Discovering database schema...');
|
|
@@ -97,7 +97,7 @@ class SmartDBClient {
|
|
|
97
97
|
}
|
|
98
98
|
getTableOperations(tableName) {
|
|
99
99
|
if (!this.initialized) {
|
|
100
|
-
throw new Error('
|
|
100
|
+
throw new Error('SqlDBClient not initialized. Call initialize() first.');
|
|
101
101
|
}
|
|
102
102
|
return new operations_1.TableOperationsImpl(tableName, this.dbManager, this.cacheManager, this.invalidationManager, this.queryBuilder, this.config.cache);
|
|
103
103
|
}
|
|
@@ -143,7 +143,7 @@ class SmartDBClient {
|
|
|
143
143
|
return generator.generateCompleteSchema(options);
|
|
144
144
|
}
|
|
145
145
|
async close() {
|
|
146
|
-
this.log('info', 'Closing
|
|
146
|
+
this.log('info', 'Closing SqlDBClient...');
|
|
147
147
|
// Stop auto-warming if enabled
|
|
148
148
|
if (this.warmingManager) {
|
|
149
149
|
await this.warmingManager.stop();
|
|
@@ -152,7 +152,7 @@ class SmartDBClient {
|
|
|
152
152
|
await this.dbManager.close();
|
|
153
153
|
await this.redisManager.close();
|
|
154
154
|
this.initialized = false;
|
|
155
|
-
this.log('info', '
|
|
155
|
+
this.log('info', 'SqlDBClient closed');
|
|
156
156
|
}
|
|
157
157
|
/**
|
|
158
158
|
* Get auto-warming statistics
|
|
@@ -184,5 +184,5 @@ class SmartDBClient {
|
|
|
184
184
|
}
|
|
185
185
|
}
|
|
186
186
|
}
|
|
187
|
-
exports.
|
|
187
|
+
exports.SqlDBClient = SqlDBClient;
|
|
188
188
|
//# sourceMappingURL=client.js.map
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":";;;AAAA,2CAMwB;AAGxB,kDAAgE;AAChE,8CAA4D;AAC5D,6DAAyD;AACzD,yEAAqE;AACrE,mEAA+D;AAC/D,yDAAqD;AACrD,uDAA2D;AAC3D,yDAAqD;AACrD,mDAAyD;AACzD,qDAAwD;AACxD,yDAAqD;AACrD,yDAA6D;AAC7D,uEAAkE;AAClE,yEAAoE;AAGpE,MAAa,
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
export declare function
|
|
1
|
+
import { SqlDBClient } from './client';
|
|
2
|
+
import { SqlDBConfig } from './types/config';
|
|
3
|
+
export declare function createSqlDB(config: SqlDBConfig, options?: {
|
|
4
4
|
singleton?: boolean;
|
|
5
|
-
}): Promise<
|
|
6
|
-
export declare function
|
|
7
|
-
export declare function
|
|
8
|
-
export {
|
|
5
|
+
}): Promise<SqlDBClient>;
|
|
6
|
+
export declare function getSqlDB(): SqlDBClient;
|
|
7
|
+
export declare function clearSqlDBSingleton(): void;
|
|
8
|
+
export { SqlDBClient } from './client';
|
|
9
9
|
export * from './types/config';
|
|
10
10
|
export * from './types/query';
|
|
11
11
|
export * from './types/cache';
|
|
@@ -19,10 +19,10 @@ export { QueryBuilder } from './query/query-builder';
|
|
|
19
19
|
export { InMemoryQueryTracker, generateQueryId } from './query/query-tracker';
|
|
20
20
|
export { SchemaGenerator } from './cli/schema-generator';
|
|
21
21
|
declare const _default: {
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
22
|
+
createSqlDB: typeof createSqlDB;
|
|
23
|
+
getSqlDB: typeof getSqlDB;
|
|
24
|
+
clearSqlDBSingleton: typeof clearSqlDBSingleton;
|
|
25
|
+
SqlDBClient: typeof SqlDBClient;
|
|
26
26
|
};
|
|
27
27
|
export default _default;
|
|
28
28
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAK7C,wBAAsB,WAAW,CAC/B,MAAM,EAAE,WAAW,EACnB,OAAO,CAAC,EAAE;IAAE,SAAS,CAAC,EAAE,OAAO,CAAA;CAAE,GAChC,OAAO,CAAC,WAAW,CAAC,CAuBtB;AAgCD,wBAAgB,QAAQ,IAAI,WAAW,CAOtC;AAGD,wBAAgB,mBAAmB,IAAI,IAAI,CAE1C;AAGD,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAGvC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAG/B,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC9E,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;;;;;;;AAGzD,wBAKE"}
|
package/dist/index.js
CHANGED
|
@@ -14,21 +14,21 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
exports.SchemaGenerator = exports.generateQueryId = exports.InMemoryQueryTracker = exports.QueryBuilder = exports.HooksManager = exports.DependencyGraph = exports.InvalidationManager = exports.CacheManager = exports.
|
|
18
|
-
exports.
|
|
19
|
-
exports.
|
|
20
|
-
exports.
|
|
17
|
+
exports.SchemaGenerator = exports.generateQueryId = exports.InMemoryQueryTracker = exports.QueryBuilder = exports.HooksManager = exports.DependencyGraph = exports.InvalidationManager = exports.CacheManager = exports.SqlDBClient = void 0;
|
|
18
|
+
exports.createSqlDB = createSqlDB;
|
|
19
|
+
exports.getSqlDB = getSqlDB;
|
|
20
|
+
exports.clearSqlDBSingleton = clearSqlDBSingleton;
|
|
21
21
|
const client_1 = require("./client");
|
|
22
22
|
// Singleton instance storage
|
|
23
23
|
let singletonInstance = null;
|
|
24
|
-
async function
|
|
24
|
+
async function createSqlDB(config, options) {
|
|
25
25
|
// If singleton mode is enabled and instance exists, return it
|
|
26
26
|
if (options?.singleton) {
|
|
27
27
|
if (singletonInstance) {
|
|
28
28
|
return singletonInstance;
|
|
29
29
|
}
|
|
30
30
|
// Create and store singleton instance
|
|
31
|
-
const client = new client_1.
|
|
31
|
+
const client = new client_1.SqlDBClient(config);
|
|
32
32
|
await client.initialize();
|
|
33
33
|
// Wrap in Proxy for dynamic table access
|
|
34
34
|
const proxiedClient = createProxiedClient(client);
|
|
@@ -36,7 +36,7 @@ async function createSmartDB(config, options) {
|
|
|
36
36
|
return singletonInstance;
|
|
37
37
|
}
|
|
38
38
|
// Non-singleton mode: create new instance
|
|
39
|
-
const client = new client_1.
|
|
39
|
+
const client = new client_1.SqlDBClient(config);
|
|
40
40
|
await client.initialize();
|
|
41
41
|
// Wrap in Proxy for dynamic table access
|
|
42
42
|
return createProxiedClient(client);
|
|
@@ -67,19 +67,19 @@ function createProxiedClient(client) {
|
|
|
67
67
|
});
|
|
68
68
|
}
|
|
69
69
|
// Get the singleton instance (throws if not initialized)
|
|
70
|
-
function
|
|
70
|
+
function getSqlDB() {
|
|
71
71
|
if (!singletonInstance) {
|
|
72
|
-
throw new Error('Singleton
|
|
72
|
+
throw new Error('Singleton SqlDB instance not initialized. Call createSqlDB({ ... }, { singleton: true }) first.');
|
|
73
73
|
}
|
|
74
74
|
return singletonInstance;
|
|
75
75
|
}
|
|
76
76
|
// Clear singleton instance (useful for testing or reconnecting)
|
|
77
|
-
function
|
|
77
|
+
function clearSqlDBSingleton() {
|
|
78
78
|
singletonInstance = null;
|
|
79
79
|
}
|
|
80
80
|
// Export main client class
|
|
81
81
|
var client_2 = require("./client");
|
|
82
|
-
Object.defineProperty(exports, "
|
|
82
|
+
Object.defineProperty(exports, "SqlDBClient", { enumerable: true, get: function () { return client_2.SqlDBClient; } });
|
|
83
83
|
// Export all type definitions
|
|
84
84
|
__exportStar(require("./types/config"), exports);
|
|
85
85
|
__exportStar(require("./types/query"), exports);
|
|
@@ -104,9 +104,9 @@ var schema_generator_1 = require("./cli/schema-generator");
|
|
|
104
104
|
Object.defineProperty(exports, "SchemaGenerator", { enumerable: true, get: function () { return schema_generator_1.SchemaGenerator; } });
|
|
105
105
|
// Default export
|
|
106
106
|
exports.default = {
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
107
|
+
createSqlDB,
|
|
108
|
+
getSqlDB,
|
|
109
|
+
clearSqlDBSingleton,
|
|
110
|
+
SqlDBClient: client_1.SqlDBClient,
|
|
111
111
|
};
|
|
112
112
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAMA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { TableOperations } from '../types/query';
|
|
2
|
-
import {
|
|
3
|
-
export declare function createTableProxy(client:
|
|
2
|
+
import { SqlDBClient } from '../client';
|
|
3
|
+
export declare function createTableProxy(client: SqlDBClient, tableName: string): TableOperations<any>;
|
|
4
4
|
export declare class TableProxyFactory {
|
|
5
5
|
private client;
|
|
6
6
|
private cache;
|
|
7
|
-
constructor(client:
|
|
7
|
+
constructor(client: SqlDBClient);
|
|
8
8
|
getProxy(tableName: string): TableOperations<any>;
|
|
9
9
|
clearCache(): void;
|
|
10
10
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"table-proxy.d.ts","sourceRoot":"","sources":["../../src/query/table-proxy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"table-proxy.d.ts","sourceRoot":"","sources":["../../src/query/table-proxy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAExC,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,WAAW,EACnB,SAAS,EAAE,MAAM,GAChB,eAAe,CAAC,GAAG,CAAC,CAEtB;AAED,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,KAAK,CAAgD;gBAEjD,MAAM,EAAE,WAAW;IAI/B,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,eAAe,CAAC,GAAG,CAAC;IASjD,UAAU,IAAI,IAAI;CAGnB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"table-proxy.js","sourceRoot":"","sources":["../../src/query/table-proxy.ts"],"names":[],"mappings":";;;AAGA,4CAKC;AALD,SAAgB,gBAAgB,CAC9B,
|
|
1
|
+
{"version":3,"file":"table-proxy.js","sourceRoot":"","sources":["../../src/query/table-proxy.ts"],"names":[],"mappings":";;;AAGA,4CAKC;AALD,SAAgB,gBAAgB,CAC9B,MAAmB,EACnB,SAAiB;IAEjB,OAAO,MAAM,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC;AAC9C,CAAC;AAED,MAAa,iBAAiB;IAI5B,YAAY,MAAmB;QAFvB,UAAK,GAAsC,IAAI,GAAG,EAAE,CAAC;QAG3D,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,QAAQ,CAAC,SAAiB;QACxB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;YAC/B,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC;YAC7D,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;QACxC,CAAC;QAED,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC;IACpC,CAAC;IAED,UAAU;QACR,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;CACF;AApBD,8CAoBC"}
|
package/dist/types/client.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { SqlDBClient } from '../client';
|
|
2
2
|
import { TableOperations } from './query';
|
|
3
3
|
/**
|
|
4
|
-
* Helper type to add dynamic table access to
|
|
4
|
+
* Helper type to add dynamic table access to SqlDBClient
|
|
5
5
|
*
|
|
6
6
|
* Usage:
|
|
7
7
|
* ```typescript
|
|
@@ -11,22 +11,22 @@ import { TableOperations } from './query';
|
|
|
11
11
|
* products: { id: number; name: string; price: number };
|
|
12
12
|
* }
|
|
13
13
|
*
|
|
14
|
-
* type MyDB =
|
|
15
|
-
* const db = await
|
|
14
|
+
* type MyDB = SqlDBWithTables<MySchema>;
|
|
15
|
+
* const db = await createSqlDB(config) as MyDB;
|
|
16
16
|
*
|
|
17
17
|
* // Now you have full type safety:
|
|
18
18
|
* const users = await db.users.findMany(); // users: { id: number; name: string; email: string }[]
|
|
19
19
|
* const order = await db.orders.findById(1); // order: { id: number; user_id: number; total: number } | null
|
|
20
20
|
* ```
|
|
21
21
|
*/
|
|
22
|
-
export type
|
|
22
|
+
export type SqlDBWithTables<TSchema extends Record<string, any>> = SqlDBClient & {
|
|
23
23
|
[K in keyof TSchema]: TableOperations<TSchema[K]>;
|
|
24
24
|
};
|
|
25
25
|
/**
|
|
26
26
|
* For cases where you don't have a schema defined,
|
|
27
27
|
* you can use this type to get basic dynamic table access
|
|
28
28
|
*/
|
|
29
|
-
export type
|
|
29
|
+
export type SqlDBWithDynamicTables = SqlDBClient & {
|
|
30
30
|
[tableName: string]: TableOperations<any>;
|
|
31
31
|
};
|
|
32
32
|
//# sourceMappingURL=client.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/types/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/types/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE1C;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,MAAM,eAAe,CAAC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,WAAW,GAAG;KAC9E,CAAC,IAAI,MAAM,OAAO,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;CAClD,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,sBAAsB,GAAG,WAAW,GAAG;IACjD,CAAC,SAAS,EAAE,MAAM,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;CAC3C,CAAC"}
|
package/dist/types/config.d.ts
CHANGED
|
@@ -35,7 +35,7 @@ export interface LoggingConfig {
|
|
|
35
35
|
level?: 'debug' | 'info' | 'warn' | 'error' | 'none';
|
|
36
36
|
logger?: (level: string, message: string, meta?: any) => void;
|
|
37
37
|
}
|
|
38
|
-
export interface
|
|
38
|
+
export interface SqlDBConfig {
|
|
39
39
|
mariadb: MariaDBConfig;
|
|
40
40
|
redis: RedisConfig;
|
|
41
41
|
cache?: CacheConfig;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/types/config.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE1C,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,YAAY,CAAC;CACxB;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B;AAED,MAAM,WAAW,eAAe;IAC9B,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;IACrD,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC;CAC/D;AAED,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/types/config.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE1C,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,YAAY,CAAC;CACxB;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B;AAED,MAAM,WAAW,eAAe;IAC9B,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;IACrD,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC;CAC/D;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,aAAa,CAAC;IACvB,KAAK,EAAE,WAAW,CAAC;IACnB,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,OAAO,CAAC,EAAE,aAAa,CAAC;CACzB;AAGD,eAAO,MAAM,oBAAoB,EAAE,QAAQ,CAAC,WAAW,CAMtD,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,QAAQ,CAAC,eAAe,CAM9D,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,QAAQ,CAAC,aAAa,CAO1D,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,QAAQ,CAAC,aAAa,CAY1D,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bhushanpawar/sqldb",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.5",
|
|
4
4
|
"description": "An intelligent MariaDB client with Redis-backed caching, automatic schema discovery, relationship mapping, and smart cache invalidation",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|