@hawiah/core 1.0.2 → 1.2.4
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 +97 -76
- package/dist/Hawiah.d.ts +32 -6
- package/dist/Hawiah.js +108 -18
- package/dist/Hawiah.js.map +1 -1
- package/dist/HawiahNext.d.ts +25 -0
- package/dist/HawiahNext.js +50 -0
- package/dist/HawiahNext.js.map +1 -0
- package/dist/Schema.d.ts +52 -0
- package/dist/Schema.js +119 -0
- package/dist/Schema.js.map +1 -0
- package/dist/drivers/MemoryDriver.d.ts +13 -1
- package/dist/drivers/MemoryDriver.js +50 -36
- package/dist/drivers/MemoryDriver.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.js +6 -1
- package/dist/index.js.map +1 -1
- package/dist/interfaces/IDriver.d.ts +39 -27
- package/package.json +5 -5
package/README.md
CHANGED
|
@@ -1,101 +1,122 @@
|
|
|
1
|
-
# @hawiah/core
|
|
1
|
+
# @hawiah/core
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
**Hawiah** is a lightweight, schema-less database abstraction layer designed for modern applications. It provides a unified API for various databases while handling advanced features like **Connection Pooling**, **Relationship Management**, and **Data Batching** automatically.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
## Features
|
|
6
|
+
|
|
7
|
+
- **Unified Interface**: Use MongoDB, SQLite, Firebase, or SQL with the exact same API.
|
|
8
|
+
- **Smart Connection Pooling**: Automatically shares physical connections between instances to maximize performance.
|
|
9
|
+
- **Next.js & Serverless Ready**: Built-in support for HMR (Hot Module Replacement) and Server Components.
|
|
10
|
+
- **Schema Validation**: Optional, simple, and powerful schema definitions.
|
|
11
|
+
- **Zero-Config Relations**: Handle database relationships with ease.
|
|
6
12
|
|
|
7
13
|
## Installation
|
|
8
14
|
|
|
9
15
|
```bash
|
|
10
|
-
# Install core package only
|
|
11
16
|
npm install @hawiah/core
|
|
17
|
+
```
|
|
12
18
|
|
|
13
|
-
|
|
14
|
-
|
|
19
|
+
Then install the driver of your choice:
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
npm install @hawiah/mongo
|
|
23
|
+
# OR
|
|
24
|
+
npm install @hawiah/sqlite
|
|
25
|
+
# OR
|
|
26
|
+
npm install @hawiah/firebase
|
|
15
27
|
```
|
|
16
28
|
|
|
17
|
-
##
|
|
29
|
+
## Usage Examples
|
|
18
30
|
|
|
19
|
-
|
|
20
|
-
- 🔌 Multiple database driver support
|
|
21
|
-
- 🔗 Built-in relationships with DataLoader batching
|
|
22
|
-
- 📦 Schema-less design
|
|
23
|
-
- 🎯 Simple and intuitive API
|
|
24
|
-
- 🔄 Automatic N+1 query optimization
|
|
25
|
-
- 💾 Memory driver included
|
|
31
|
+
Hawiah automatically manages connections. You can create as many instances as you need; if they share the same configuration, they will share the same physical connection.
|
|
26
32
|
|
|
27
|
-
|
|
33
|
+
### 1. MongoDB
|
|
28
34
|
|
|
29
|
-
```
|
|
30
|
-
import { Hawiah
|
|
31
|
-
|
|
32
|
-
```
|
|
35
|
+
```javascript
|
|
36
|
+
import { Hawiah } from '@hawiah/core';
|
|
37
|
+
import { MongoDriver } from '@hawiah/mongo';
|
|
33
38
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
- `update(query, data)` - Update records
|
|
43
|
-
- `remove(query)` - Remove records
|
|
44
|
-
- `clear()` - Clear all records
|
|
45
|
-
|
|
46
|
-
### Query Operations
|
|
47
|
-
- `getById(id)` - Get record by ID
|
|
48
|
-
- `getBy(field, value)` - Get records by field value
|
|
49
|
-
- `has(query)` - Check if records exist
|
|
50
|
-
- `count(query)` - Count matching records
|
|
51
|
-
- `sort(query, field, direction)` - Sort results
|
|
52
|
-
- `select(query, fields)` - Select specific fields
|
|
53
|
-
- `paginate(query, page, pageSize)` - Paginate results
|
|
54
|
-
|
|
55
|
-
### Array Operations
|
|
56
|
-
- `push(query, field, value)` - Add to array
|
|
57
|
-
- `pull(query, field, value)` - Remove from array
|
|
58
|
-
- `shift(query, field)` - Remove first element
|
|
59
|
-
- `unshift(query, field, value)` - Add to beginning
|
|
60
|
-
- `pop(query, field)` - Remove last element
|
|
61
|
-
|
|
62
|
-
### Numeric Operations
|
|
63
|
-
- `increment(query, field, amount)` - Increment field
|
|
64
|
-
- `decrement(query, field, amount)` - Decrement field
|
|
65
|
-
- `sum(field, query)` - Sum field values
|
|
66
|
-
|
|
67
|
-
### Relationships
|
|
39
|
+
const db = new Hawiah({
|
|
40
|
+
driver: MongoDriver,
|
|
41
|
+
config: {
|
|
42
|
+
uri: 'mongodb://localhost:27017',
|
|
43
|
+
dbName: 'my_project',
|
|
44
|
+
collectionName: 'users' // <--- Collection 1
|
|
45
|
+
}
|
|
46
|
+
});
|
|
68
47
|
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
48
|
+
const posts = new Hawiah({
|
|
49
|
+
driver: MongoDriver,
|
|
50
|
+
config: {
|
|
51
|
+
uri: 'mongodb://localhost:27017',
|
|
52
|
+
dbName: 'my_project',
|
|
53
|
+
collectionName: 'posts' // <--- Collection 2 (Shares connection with users)
|
|
54
|
+
}
|
|
55
|
+
});
|
|
73
56
|
|
|
74
|
-
|
|
75
|
-
|
|
57
|
+
await db.connect(); // Orchestrates the connection for all sharing instances
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
### 2. SQLite
|
|
61
|
+
|
|
62
|
+
```javascript
|
|
63
|
+
import { Hawiah } from '@hawiah/core';
|
|
64
|
+
import { SqliteDriver } from '@hawiah/sqlite';
|
|
65
|
+
|
|
66
|
+
const users = new Hawiah({
|
|
67
|
+
driver: SqliteDriver,
|
|
68
|
+
config: {
|
|
69
|
+
filename: './database.sqlite', // <--- Physical File
|
|
70
|
+
table: 'users'
|
|
71
|
+
}
|
|
72
|
+
});
|
|
73
|
+
|
|
74
|
+
const logs = new Hawiah({
|
|
75
|
+
driver: SqliteDriver,
|
|
76
|
+
config: {
|
|
77
|
+
filename: './database.sqlite', // <--- Same Config = Same Connection
|
|
78
|
+
table: 'logs'
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
```
|
|
76
82
|
|
|
77
|
-
|
|
78
|
-
|
|
83
|
+
### 3. Firebase (Firestore)
|
|
84
|
+
|
|
85
|
+
```javascript
|
|
86
|
+
import { Hawiah } from '@hawiah/core';
|
|
87
|
+
import { FirebaseDriver } from '@hawiah/firebase';
|
|
88
|
+
|
|
89
|
+
const firebaseConfig = {
|
|
90
|
+
apiKey: "AIzaSy...",
|
|
91
|
+
projectId: "my-app",
|
|
92
|
+
// ...
|
|
93
|
+
};
|
|
94
|
+
|
|
95
|
+
const profiles = new Hawiah({
|
|
96
|
+
driver: FirebaseDriver,
|
|
97
|
+
config: {
|
|
98
|
+
firebaseConfig: firebaseConfig,
|
|
99
|
+
collectionName: 'profiles'
|
|
100
|
+
}
|
|
101
|
+
});
|
|
79
102
|
```
|
|
80
103
|
|
|
81
|
-
##
|
|
104
|
+
## Next.js 16+ Support
|
|
82
105
|
|
|
83
|
-
|
|
106
|
+
If you are using **Next.js**, use the `HawiahNext` class. It ensures that your database connections persist across Hot Module Reloads (HMR) to prevent "Too Many Connections" errors during development.
|
|
84
107
|
|
|
85
108
|
```typescript
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
async count(query: Query): Promise<number> { /* ... */ }
|
|
98
|
-
}
|
|
109
|
+
// lib/db.ts
|
|
110
|
+
import { HawiahNext } from '@hawiah/core';
|
|
111
|
+
import { MongoDriver } from '@hawiah/mongo';
|
|
112
|
+
|
|
113
|
+
export const dbEvents = new HawiahNext({
|
|
114
|
+
driver: MongoDriver,
|
|
115
|
+
config: {
|
|
116
|
+
uri: process.env.MONGO_URI,
|
|
117
|
+
collectionName: 'events'
|
|
118
|
+
}
|
|
119
|
+
});
|
|
99
120
|
```
|
|
100
121
|
|
|
101
122
|
## License
|
package/dist/Hawiah.d.ts
CHANGED
|
@@ -1,20 +1,35 @@
|
|
|
1
1
|
import { IDriver, Query, Data } from './interfaces/IDriver';
|
|
2
|
+
import { Schema, SchemaDefinition } from './Schema';
|
|
3
|
+
import DataLoader from 'dataloader';
|
|
2
4
|
/**
|
|
3
5
|
* Hawiah: A lightweight, schema-less database abstraction layer.
|
|
4
6
|
* Designed to be friendly and easy to use.
|
|
5
7
|
*/
|
|
6
8
|
export declare class Hawiah {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
9
|
+
protected driver: IDriver;
|
|
10
|
+
protected isConnected: boolean;
|
|
11
|
+
protected relations: Map<string, RelationConfig>;
|
|
12
|
+
protected loaders: Map<string, DataLoader<any, any>>;
|
|
13
|
+
protected schema?: Schema;
|
|
14
|
+
static readonly IGNORE_KEYS: Set<string>;
|
|
15
|
+
private static readonly driversPool;
|
|
16
|
+
private static readonly connectionPromises;
|
|
17
|
+
private connectionKey?;
|
|
18
|
+
/**
|
|
19
|
+
* Generates a unique fingerprint for a connection setup.
|
|
20
|
+
*/
|
|
21
|
+
static getPoolKey(driver: any, config: any): string;
|
|
11
22
|
/**
|
|
12
23
|
* Creates a new Hawiah instance.
|
|
13
24
|
* @param options - Configuration options
|
|
14
|
-
* @param options.driver - The database driver
|
|
25
|
+
* @param options.driver - The database driver instance OR Driver Class for auto-pooling
|
|
26
|
+
* @param options.config - Configuration for the driver if passing a Class
|
|
27
|
+
* @param options.schema - Optional schema definition
|
|
15
28
|
*/
|
|
16
29
|
constructor(options: {
|
|
17
|
-
driver: IDriver;
|
|
30
|
+
driver: IDriver | (new (config: any) => IDriver);
|
|
31
|
+
config?: any;
|
|
32
|
+
schema?: Schema | SchemaDefinition;
|
|
18
33
|
});
|
|
19
34
|
/**
|
|
20
35
|
* Connects to the database.
|
|
@@ -345,4 +360,15 @@ export declare class Hawiah {
|
|
|
345
360
|
* Clear relationship cache
|
|
346
361
|
*/
|
|
347
362
|
clearCache(): void;
|
|
363
|
+
/**
|
|
364
|
+
* Helper to validate data if schema exists and driver is not SQL.
|
|
365
|
+
*/
|
|
366
|
+
private validateData;
|
|
367
|
+
}
|
|
368
|
+
interface RelationConfig {
|
|
369
|
+
target: Hawiah;
|
|
370
|
+
localKey: string;
|
|
371
|
+
foreignKey: string;
|
|
372
|
+
type: 'one' | 'many';
|
|
348
373
|
}
|
|
374
|
+
export {};
|
package/dist/Hawiah.js
CHANGED
|
@@ -4,6 +4,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.Hawiah = void 0;
|
|
7
|
+
const Schema_1 = require("./Schema");
|
|
7
8
|
const dataloader_1 = __importDefault(require("dataloader"));
|
|
8
9
|
/**
|
|
9
10
|
* Hawiah: A lightweight, schema-less database abstraction layer.
|
|
@@ -14,13 +15,66 @@ class Hawiah {
|
|
|
14
15
|
isConnected = false;
|
|
15
16
|
relations = new Map();
|
|
16
17
|
loaders = new Map();
|
|
18
|
+
schema;
|
|
19
|
+
static IGNORE_KEYS = new Set(['collectionName', 'tableName', 'collection', 'table', 'connectionKey']);
|
|
20
|
+
static driversPool = new Map();
|
|
21
|
+
static connectionPromises = new Map();
|
|
22
|
+
connectionKey;
|
|
23
|
+
/**
|
|
24
|
+
* Generates a unique fingerprint for a connection setup.
|
|
25
|
+
*/
|
|
26
|
+
static getPoolKey(driver, config) {
|
|
27
|
+
let cKey = config.connectionKey;
|
|
28
|
+
if (cKey)
|
|
29
|
+
return cKey;
|
|
30
|
+
cKey = typeof driver === 'function' ? driver.name : (driver.constructor?.name || 'UnknownDriver');
|
|
31
|
+
for (const key in config) {
|
|
32
|
+
if (!Hawiah.IGNORE_KEYS.has(key)) {
|
|
33
|
+
const val = config[key];
|
|
34
|
+
if (val !== null && typeof val !== 'object') {
|
|
35
|
+
cKey += `|${key}:${val}`;
|
|
36
|
+
}
|
|
37
|
+
else if (val !== null) {
|
|
38
|
+
cKey += `|${key}:${JSON.stringify(val)}`;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
return cKey;
|
|
43
|
+
}
|
|
17
44
|
/**
|
|
18
45
|
* Creates a new Hawiah instance.
|
|
19
46
|
* @param options - Configuration options
|
|
20
|
-
* @param options.driver - The database driver
|
|
47
|
+
* @param options.driver - The database driver instance OR Driver Class for auto-pooling
|
|
48
|
+
* @param options.config - Configuration for the driver if passing a Class
|
|
49
|
+
* @param options.schema - Optional schema definition
|
|
21
50
|
*/
|
|
22
51
|
constructor(options) {
|
|
23
|
-
|
|
52
|
+
if (typeof options.driver === 'function') {
|
|
53
|
+
const config = options.config || {};
|
|
54
|
+
const cKey = Hawiah.getPoolKey(options.driver, config);
|
|
55
|
+
this.connectionKey = cKey;
|
|
56
|
+
if (Hawiah.driversPool.has(cKey)) {
|
|
57
|
+
const rootDriver = Hawiah.driversPool.get(cKey);
|
|
58
|
+
const tableName = config.collectionName || config.tableName || config.collection || config.table || 'default';
|
|
59
|
+
this.driver = rootDriver.table ? rootDriver.table(tableName) : rootDriver;
|
|
60
|
+
if (this.driver.isConnected && this.driver.isConnected()) {
|
|
61
|
+
this.isConnected = true;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
this.driver = new options.driver(config);
|
|
66
|
+
Hawiah.driversPool.set(cKey, this.driver);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
this.driver = options.driver;
|
|
71
|
+
}
|
|
72
|
+
if (options.schema) {
|
|
73
|
+
this.schema = options.schema instanceof Schema_1.Schema ? options.schema : new Schema_1.Schema(options.schema);
|
|
74
|
+
if (this.driver.setSchema && this.schema) {
|
|
75
|
+
this.driver.setSchema(this.schema);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
24
78
|
}
|
|
25
79
|
/**
|
|
26
80
|
* Connects to the database.
|
|
@@ -29,7 +83,19 @@ class Hawiah {
|
|
|
29
83
|
if (this.isConnected) {
|
|
30
84
|
return;
|
|
31
85
|
}
|
|
32
|
-
|
|
86
|
+
const poolKey = this.connectionKey || this.driver;
|
|
87
|
+
let connectionPromise = Hawiah.connectionPromises.get(poolKey);
|
|
88
|
+
if (!connectionPromise) {
|
|
89
|
+
if (this.driver.isConnected && this.driver.isConnected()) {
|
|
90
|
+
this.isConnected = true;
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
connectionPromise = (async () => {
|
|
94
|
+
await this.driver.connect();
|
|
95
|
+
})();
|
|
96
|
+
Hawiah.connectionPromises.set(poolKey, connectionPromise);
|
|
97
|
+
}
|
|
98
|
+
await connectionPromise;
|
|
33
99
|
this.isConnected = true;
|
|
34
100
|
}
|
|
35
101
|
/**
|
|
@@ -49,7 +115,8 @@ class Hawiah {
|
|
|
49
115
|
*/
|
|
50
116
|
async insert(data) {
|
|
51
117
|
this.ensureConnected();
|
|
52
|
-
|
|
118
|
+
const validated = this.validateData(data);
|
|
119
|
+
return await this.driver.set(validated);
|
|
53
120
|
}
|
|
54
121
|
/**
|
|
55
122
|
* Inserts multiple records into the database.
|
|
@@ -60,7 +127,8 @@ class Hawiah {
|
|
|
60
127
|
this.ensureConnected();
|
|
61
128
|
const results = [];
|
|
62
129
|
for (const data of dataArray) {
|
|
63
|
-
const
|
|
130
|
+
const validated = this.validateData(data);
|
|
131
|
+
const result = await this.driver.set(validated);
|
|
64
132
|
results.push(result);
|
|
65
133
|
}
|
|
66
134
|
return results;
|
|
@@ -118,7 +186,8 @@ class Hawiah {
|
|
|
118
186
|
*/
|
|
119
187
|
async update(query, data) {
|
|
120
188
|
this.ensureConnected();
|
|
121
|
-
|
|
189
|
+
const validated = this.validateData(data, true);
|
|
190
|
+
return await this.driver.update(query, validated);
|
|
122
191
|
}
|
|
123
192
|
/**
|
|
124
193
|
* Updates a single record matching the query.
|
|
@@ -128,7 +197,8 @@ class Hawiah {
|
|
|
128
197
|
*/
|
|
129
198
|
async updateOne(query, data) {
|
|
130
199
|
this.ensureConnected();
|
|
131
|
-
const
|
|
200
|
+
const validated = this.validateData(data, true);
|
|
201
|
+
const count = await this.driver.update(query, validated);
|
|
132
202
|
return count > 0;
|
|
133
203
|
}
|
|
134
204
|
/**
|
|
@@ -141,11 +211,14 @@ class Hawiah {
|
|
|
141
211
|
this.ensureConnected();
|
|
142
212
|
const existing = await this.driver.getOne(query);
|
|
143
213
|
if (existing) {
|
|
144
|
-
|
|
145
|
-
|
|
214
|
+
const validated = this.validateData(data, true);
|
|
215
|
+
await this.driver.update(query, validated);
|
|
216
|
+
return { ...existing, ...validated };
|
|
146
217
|
}
|
|
147
218
|
else {
|
|
148
|
-
|
|
219
|
+
const fullData = { ...query, ...data };
|
|
220
|
+
const validated = this.validateData(fullData);
|
|
221
|
+
return await this.driver.set(validated);
|
|
149
222
|
}
|
|
150
223
|
}
|
|
151
224
|
/**
|
|
@@ -382,7 +455,7 @@ class Hawiah {
|
|
|
382
455
|
}
|
|
383
456
|
const currentValue = Number(record[field]) || 0;
|
|
384
457
|
const newValue = currentValue + amount;
|
|
385
|
-
await this.
|
|
458
|
+
await this.update(query, { [field]: newValue });
|
|
386
459
|
return newValue;
|
|
387
460
|
}
|
|
388
461
|
/**
|
|
@@ -412,7 +485,8 @@ class Hawiah {
|
|
|
412
485
|
record[field] = [];
|
|
413
486
|
}
|
|
414
487
|
record[field].push(value);
|
|
415
|
-
|
|
488
|
+
const validated = this.validateData(record, false);
|
|
489
|
+
await this.driver.update(query, validated);
|
|
416
490
|
count++;
|
|
417
491
|
}
|
|
418
492
|
return count;
|
|
@@ -432,8 +506,10 @@ class Hawiah {
|
|
|
432
506
|
if (Array.isArray(record[field])) {
|
|
433
507
|
const initialLength = record[field].length;
|
|
434
508
|
record[field] = record[field].filter((item) => JSON.stringify(item) !== JSON.stringify(value));
|
|
509
|
+
record[field] = record[field].filter((item) => JSON.stringify(item) !== JSON.stringify(value));
|
|
435
510
|
if (record[field].length !== initialLength) {
|
|
436
|
-
|
|
511
|
+
const validated = this.validateData(record, false);
|
|
512
|
+
await this.driver.update(query, validated);
|
|
437
513
|
count++;
|
|
438
514
|
}
|
|
439
515
|
}
|
|
@@ -453,7 +529,8 @@ class Hawiah {
|
|
|
453
529
|
for (const record of records) {
|
|
454
530
|
if (Array.isArray(record[field]) && record[field].length > 0) {
|
|
455
531
|
record[field].shift();
|
|
456
|
-
|
|
532
|
+
const validated = this.validateData(record, false);
|
|
533
|
+
await this.driver.update(query, validated);
|
|
457
534
|
count++;
|
|
458
535
|
}
|
|
459
536
|
}
|
|
@@ -475,7 +552,8 @@ class Hawiah {
|
|
|
475
552
|
record[field] = [];
|
|
476
553
|
}
|
|
477
554
|
record[field].unshift(value);
|
|
478
|
-
|
|
555
|
+
const validated = this.validateData(record, false);
|
|
556
|
+
await this.driver.update(query, validated);
|
|
479
557
|
count++;
|
|
480
558
|
}
|
|
481
559
|
return count;
|
|
@@ -493,7 +571,8 @@ class Hawiah {
|
|
|
493
571
|
for (const record of records) {
|
|
494
572
|
if (Array.isArray(record[field]) && record[field].length > 0) {
|
|
495
573
|
record[field].pop();
|
|
496
|
-
|
|
574
|
+
const validated = this.validateData(record, false);
|
|
575
|
+
await this.driver.update(query, validated);
|
|
497
576
|
count++;
|
|
498
577
|
}
|
|
499
578
|
}
|
|
@@ -512,7 +591,8 @@ class Hawiah {
|
|
|
512
591
|
for (const record of records) {
|
|
513
592
|
if (field in record) {
|
|
514
593
|
delete record[field];
|
|
515
|
-
|
|
594
|
+
const validated = this.validateData(record, false);
|
|
595
|
+
await this.driver.update(query, validated);
|
|
516
596
|
count++;
|
|
517
597
|
}
|
|
518
598
|
}
|
|
@@ -533,7 +613,8 @@ class Hawiah {
|
|
|
533
613
|
if (oldField in record) {
|
|
534
614
|
record[newField] = record[oldField];
|
|
535
615
|
delete record[oldField];
|
|
536
|
-
|
|
616
|
+
const validated = this.validateData(record, false);
|
|
617
|
+
await this.driver.update(query, validated);
|
|
537
618
|
count++;
|
|
538
619
|
}
|
|
539
620
|
}
|
|
@@ -704,6 +785,15 @@ class Hawiah {
|
|
|
704
785
|
this.loaders.forEach(loader => loader.clearAll());
|
|
705
786
|
this.loaders.clear();
|
|
706
787
|
}
|
|
788
|
+
/**
|
|
789
|
+
* Helper to validate data if schema exists and driver is not SQL.
|
|
790
|
+
*/
|
|
791
|
+
validateData(data, isPartial = false) {
|
|
792
|
+
if (this.schema && this.driver.dbType !== 'sql') {
|
|
793
|
+
return this.schema.validate(data, isPartial);
|
|
794
|
+
}
|
|
795
|
+
return data;
|
|
796
|
+
}
|
|
707
797
|
}
|
|
708
798
|
exports.Hawiah = Hawiah;
|
|
709
799
|
//# sourceMappingURL=Hawiah.js.map
|
package/dist/Hawiah.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Hawiah.js","sourceRoot":"","sources":["../src/Hawiah.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Hawiah.js","sourceRoot":"","sources":["../src/Hawiah.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { Hawiah } from './Hawiah';
|
|
2
|
+
import { Schema, SchemaDefinition } from './Schema';
|
|
3
|
+
import { IDriver } from './interfaces/IDriver';
|
|
4
|
+
/**
|
|
5
|
+
* A specialized Hawiah class designed for Next.js environments.
|
|
6
|
+
* Implements a singleton pattern (HMR-safe) to prevent multiple database connections during development.
|
|
7
|
+
*/
|
|
8
|
+
export declare class HawiahNext extends Hawiah {
|
|
9
|
+
/**
|
|
10
|
+
* Creates a new instance that persists across Hot Module Replacements.
|
|
11
|
+
* @param options Configuration options
|
|
12
|
+
*/
|
|
13
|
+
constructor(options: {
|
|
14
|
+
driver: IDriver | (new (config: any) => IDriver);
|
|
15
|
+
config?: any;
|
|
16
|
+
schema?: Schema | SchemaDefinition;
|
|
17
|
+
});
|
|
18
|
+
/**
|
|
19
|
+
* Creates a request-scoped instance sharing the same underlying connection.
|
|
20
|
+
* Useful for isolation in Server Components.
|
|
21
|
+
* @param name Table or Collection name
|
|
22
|
+
* @param schema Optional schema override
|
|
23
|
+
*/
|
|
24
|
+
table(name: string, schema?: Schema | SchemaDefinition): Hawiah;
|
|
25
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.HawiahNext = void 0;
|
|
4
|
+
const Hawiah_1 = require("./Hawiah");
|
|
5
|
+
const Schema_1 = require("./Schema");
|
|
6
|
+
/**
|
|
7
|
+
* A specialized Hawiah class designed for Next.js environments.
|
|
8
|
+
* Implements a singleton pattern (HMR-safe) to prevent multiple database connections during development.
|
|
9
|
+
*/
|
|
10
|
+
class HawiahNext extends Hawiah_1.Hawiah {
|
|
11
|
+
/**
|
|
12
|
+
* Creates a new instance that persists across Hot Module Replacements.
|
|
13
|
+
* @param options Configuration options
|
|
14
|
+
*/
|
|
15
|
+
constructor(options) {
|
|
16
|
+
const config = options.config || {};
|
|
17
|
+
const driverName = typeof options.driver === 'function' ? options.driver.name : (options.driver.constructor?.name || 'Unknown');
|
|
18
|
+
const tableName = config.collectionName || config.tableName || config.collection || config.table || 'default';
|
|
19
|
+
const instanceKey = `HAWIAH_INST_${driverName}_${tableName}_${Hawiah_1.Hawiah.getPoolKey(options.driver, config)}`;
|
|
20
|
+
const g = globalThis;
|
|
21
|
+
const pool = g.__HAWIAH_INSTANCES__ || (g.__HAWIAH_INSTANCES__ = new Map());
|
|
22
|
+
if (pool.has(instanceKey)) {
|
|
23
|
+
const existing = pool.get(instanceKey);
|
|
24
|
+
if (options.schema) {
|
|
25
|
+
const newSchema = options.schema instanceof Schema_1.Schema ? options.schema : new Schema_1.Schema(options.schema);
|
|
26
|
+
existing.schema = newSchema;
|
|
27
|
+
if (existing.driver.setSchema) {
|
|
28
|
+
existing.driver.setSchema(newSchema);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
return existing;
|
|
32
|
+
}
|
|
33
|
+
super(options);
|
|
34
|
+
pool.set(instanceKey, this);
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Creates a request-scoped instance sharing the same underlying connection.
|
|
38
|
+
* Useful for isolation in Server Components.
|
|
39
|
+
* @param name Table or Collection name
|
|
40
|
+
* @param schema Optional schema override
|
|
41
|
+
*/
|
|
42
|
+
table(name, schema) {
|
|
43
|
+
return new Hawiah_1.Hawiah({
|
|
44
|
+
driver: this.driver.table ? this.driver.table(name) : this.driver,
|
|
45
|
+
schema: schema || this.schema
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
exports.HawiahNext = HawiahNext;
|
|
50
|
+
//# sourceMappingURL=HawiahNext.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HawiahNext.js","sourceRoot":"","sources":["../src/HawiahNext.ts"],"names":[],"mappings":";;;AAAA,qCAAkC;AAClC,qCAAoD;AAGpD;;;GAGG;AACH,MAAa,UAAW,SAAQ,eAAM;IAClC;;;OAGG;IACH,YAAY,OAIX;QACG,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC;QAEpC,MAAM,UAAU,GAAG,OAAO,OAAO,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,IAAI,SAAS,CAAC,CAAC;QAChI,MAAM,SAAS,GAAG,MAAM,CAAC,cAAc,IAAI,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,KAAK,IAAI,SAAS,CAAC;QAC9G,MAAM,WAAW,GAAG,eAAe,UAAU,IAAI,SAAS,IAAI,eAAM,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;QAE1G,MAAM,CAAC,GAAG,UAAiB,CAAC;QAC5B,MAAM,IAAI,GAAG,CAAC,CAAC,oBAAoB,IAAI,CAAC,CAAC,CAAC,oBAAoB,GAAG,IAAI,GAAG,EAAE,CAAC,CAAC;QAE5E,IAAI,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;YACxB,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,CAAe,CAAC;YAErD,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;gBACjB,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,YAAY,eAAM,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,eAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;gBAChG,QAAgB,CAAC,MAAM,GAAG,SAAS,CAAC;gBACrC,IAAK,QAAgB,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;oBACpC,QAAgB,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;gBAClD,CAAC;YACL,CAAC;YAED,OAAO,QAAe,CAAC;QAC3B,CAAC;QAED,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;IAChC,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,IAAY,EAAE,MAAkC;QAClD,OAAO,IAAI,eAAM,CAAC;YACd,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM;YACjE,MAAM,EAAE,MAAM,IAAI,IAAI,CAAC,MAAM;SAChC,CAAC,CAAC;IACP,CAAC;CACJ;AAjDD,gCAiDC"}
|
package/dist/Schema.d.ts
ADDED
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
export type SchemaType = 'string' | 'text' | 'char' | 'number' | 'integer' | 'float' | 'bigint' | 'boolean' | 'date' | 'array' | 'object' | 'json' | 'blob' | 'uuid' | 'email' | 'url' | 'any';
|
|
2
|
+
export declare const DataTypes: {
|
|
3
|
+
STRING: SchemaType;
|
|
4
|
+
TEXT: SchemaType;
|
|
5
|
+
CHAR: SchemaType;
|
|
6
|
+
NUMBER: SchemaType;
|
|
7
|
+
INTEGER: SchemaType;
|
|
8
|
+
FLOAT: SchemaType;
|
|
9
|
+
BIGINT: SchemaType;
|
|
10
|
+
BOOLEAN: SchemaType;
|
|
11
|
+
DATE: SchemaType;
|
|
12
|
+
ARRAY: SchemaType;
|
|
13
|
+
OBJECT: SchemaType;
|
|
14
|
+
JSON: SchemaType;
|
|
15
|
+
BLOB: SchemaType;
|
|
16
|
+
UUID: SchemaType;
|
|
17
|
+
EMAIL: SchemaType;
|
|
18
|
+
URL: SchemaType;
|
|
19
|
+
ANY: SchemaType;
|
|
20
|
+
};
|
|
21
|
+
export interface SchemaField {
|
|
22
|
+
type: SchemaType;
|
|
23
|
+
required?: boolean;
|
|
24
|
+
default?: any;
|
|
25
|
+
}
|
|
26
|
+
export interface SchemaDefinition {
|
|
27
|
+
[key: string]: SchemaField | SchemaType;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Ensures data integrity by validating input against a defined structure.
|
|
31
|
+
*/
|
|
32
|
+
export declare class Schema {
|
|
33
|
+
private definition;
|
|
34
|
+
constructor(definition: SchemaDefinition);
|
|
35
|
+
/**
|
|
36
|
+
* Returns the raw schema definition.
|
|
37
|
+
*/
|
|
38
|
+
getDefinition(): SchemaDefinition;
|
|
39
|
+
/**
|
|
40
|
+
* Validates and processes the data against the schema.
|
|
41
|
+
* - Applies default values.
|
|
42
|
+
* - Checks required fields (unless isPartial is true).
|
|
43
|
+
* - Validates data types.
|
|
44
|
+
*
|
|
45
|
+
* @param data The input data object.
|
|
46
|
+
* @param isPartial If true, skips 'required' checks (useful for updates).
|
|
47
|
+
* @returns The validated (and possibly modified) data object.
|
|
48
|
+
* @throws Error if validation fails.
|
|
49
|
+
*/
|
|
50
|
+
validate(data: any, isPartial?: boolean): any;
|
|
51
|
+
private checkType;
|
|
52
|
+
}
|
package/dist/Schema.js
ADDED
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Schema = exports.DataTypes = void 0;
|
|
4
|
+
exports.DataTypes = {
|
|
5
|
+
STRING: 'string',
|
|
6
|
+
TEXT: 'text',
|
|
7
|
+
CHAR: 'char',
|
|
8
|
+
NUMBER: 'number',
|
|
9
|
+
INTEGER: 'integer',
|
|
10
|
+
FLOAT: 'float',
|
|
11
|
+
BIGINT: 'bigint',
|
|
12
|
+
BOOLEAN: 'boolean',
|
|
13
|
+
DATE: 'date',
|
|
14
|
+
ARRAY: 'array',
|
|
15
|
+
OBJECT: 'object',
|
|
16
|
+
JSON: 'json',
|
|
17
|
+
BLOB: 'blob',
|
|
18
|
+
UUID: 'uuid',
|
|
19
|
+
EMAIL: 'email',
|
|
20
|
+
URL: 'url',
|
|
21
|
+
ANY: 'any',
|
|
22
|
+
};
|
|
23
|
+
/**
|
|
24
|
+
* Ensures data integrity by validating input against a defined structure.
|
|
25
|
+
*/
|
|
26
|
+
class Schema {
|
|
27
|
+
definition;
|
|
28
|
+
constructor(definition) {
|
|
29
|
+
this.definition = definition;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Returns the raw schema definition.
|
|
33
|
+
*/
|
|
34
|
+
getDefinition() {
|
|
35
|
+
return this.definition;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Validates and processes the data against the schema.
|
|
39
|
+
* - Applies default values.
|
|
40
|
+
* - Checks required fields (unless isPartial is true).
|
|
41
|
+
* - Validates data types.
|
|
42
|
+
*
|
|
43
|
+
* @param data The input data object.
|
|
44
|
+
* @param isPartial If true, skips 'required' checks (useful for updates).
|
|
45
|
+
* @returns The validated (and possibly modified) data object.
|
|
46
|
+
* @throws Error if validation fails.
|
|
47
|
+
*/
|
|
48
|
+
validate(data, isPartial = false) {
|
|
49
|
+
const validatedData = { ...data };
|
|
50
|
+
for (const key in this.definition) {
|
|
51
|
+
let rule = this.definition[key];
|
|
52
|
+
if (typeof rule === 'string') {
|
|
53
|
+
rule = { type: rule };
|
|
54
|
+
}
|
|
55
|
+
let value = validatedData[key];
|
|
56
|
+
// Apply default value if missing and not in partial mode
|
|
57
|
+
if (!isPartial && value === undefined && rule.default !== undefined) {
|
|
58
|
+
value = rule.default;
|
|
59
|
+
validatedData[key] = value;
|
|
60
|
+
}
|
|
61
|
+
// Check required fields
|
|
62
|
+
if (!isPartial && rule.required && (value === undefined || value === null)) {
|
|
63
|
+
throw new Error(`Validation Error: Field "${key}" is required.`);
|
|
64
|
+
}
|
|
65
|
+
// Validate Type
|
|
66
|
+
if (value !== undefined && value !== null && rule.type !== 'any') {
|
|
67
|
+
if (!this.checkType(value, rule.type)) {
|
|
68
|
+
throw new Error(`Validation Error: Field "${key}" expected type ${rule.type}.`);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
return validatedData;
|
|
73
|
+
}
|
|
74
|
+
checkType(value, type) {
|
|
75
|
+
switch (type) {
|
|
76
|
+
case 'string':
|
|
77
|
+
case 'text':
|
|
78
|
+
case 'char':
|
|
79
|
+
return typeof value === 'string';
|
|
80
|
+
case 'number':
|
|
81
|
+
case 'float':
|
|
82
|
+
return typeof value === 'number' && !isNaN(value);
|
|
83
|
+
case 'integer':
|
|
84
|
+
return Number.isInteger(value);
|
|
85
|
+
case 'bigint':
|
|
86
|
+
return typeof value === 'bigint';
|
|
87
|
+
case 'boolean':
|
|
88
|
+
return typeof value === 'boolean';
|
|
89
|
+
case 'array':
|
|
90
|
+
return Array.isArray(value);
|
|
91
|
+
case 'object':
|
|
92
|
+
case 'json':
|
|
93
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
94
|
+
case 'date':
|
|
95
|
+
return value instanceof Date || (!isNaN(Date.parse(value)) && typeof value !== 'number');
|
|
96
|
+
case 'blob':
|
|
97
|
+
return typeof Buffer !== 'undefined' ? Buffer.isBuffer(value) : value instanceof Uint8Array;
|
|
98
|
+
case 'uuid':
|
|
99
|
+
return typeof value === 'string' && /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(value);
|
|
100
|
+
case 'email':
|
|
101
|
+
return typeof value === 'string' && /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(value);
|
|
102
|
+
case 'url':
|
|
103
|
+
if (typeof value !== 'string')
|
|
104
|
+
return false;
|
|
105
|
+
try {
|
|
106
|
+
new URL(value);
|
|
107
|
+
return true;
|
|
108
|
+
}
|
|
109
|
+
catch {
|
|
110
|
+
return false;
|
|
111
|
+
}
|
|
112
|
+
case 'any':
|
|
113
|
+
default:
|
|
114
|
+
return true;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
exports.Schema = Schema;
|
|
119
|
+
//# sourceMappingURL=Schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Schema.js","sourceRoot":"","sources":["../src/Schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,22 @@
|
|
|
1
1
|
import { IDriver, Query, Data } from '../interfaces/IDriver';
|
|
2
|
+
/**
|
|
3
|
+
* MemoryDriver: A simple in-memory database driver for testing.
|
|
4
|
+
* Supports shared data (Pooling) via references.
|
|
5
|
+
*/
|
|
2
6
|
export declare class MemoryDriver implements IDriver {
|
|
3
7
|
private data;
|
|
4
8
|
private idCounter;
|
|
9
|
+
private connected;
|
|
10
|
+
private collectionName;
|
|
11
|
+
dbType: 'nosql';
|
|
12
|
+
constructor(options?: any);
|
|
5
13
|
connect(): Promise<void>;
|
|
6
14
|
disconnect(): Promise<void>;
|
|
15
|
+
isConnected(): boolean;
|
|
16
|
+
/**
|
|
17
|
+
* Returns a new instance for a different collection while sharing the same data array.
|
|
18
|
+
*/
|
|
19
|
+
table(name: string): IDriver;
|
|
7
20
|
set(data: Data): Promise<Data>;
|
|
8
21
|
get(query: Query): Promise<Data[]>;
|
|
9
22
|
getOne(query: Query): Promise<Data | null>;
|
|
@@ -12,6 +25,5 @@ export declare class MemoryDriver implements IDriver {
|
|
|
12
25
|
exists(query: Query): Promise<boolean>;
|
|
13
26
|
count(query: Query): Promise<number>;
|
|
14
27
|
private matches;
|
|
15
|
-
getAll(): Promise<Data[]>;
|
|
16
28
|
clear(): Promise<void>;
|
|
17
29
|
}
|
|
@@ -1,80 +1,94 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.MemoryDriver = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* MemoryDriver: A simple in-memory database driver for testing.
|
|
6
|
+
* Supports shared data (Pooling) via references.
|
|
7
|
+
*/
|
|
4
8
|
class MemoryDriver {
|
|
5
|
-
data
|
|
6
|
-
idCounter
|
|
9
|
+
data;
|
|
10
|
+
idCounter;
|
|
11
|
+
connected = false;
|
|
12
|
+
collectionName;
|
|
13
|
+
dbType = 'nosql';
|
|
14
|
+
constructor(options = {}) {
|
|
15
|
+
this.collectionName = options.collectionName || 'default';
|
|
16
|
+
this.data = options.data || [];
|
|
17
|
+
this.idCounter = options.idCounter || { value: 1 };
|
|
18
|
+
}
|
|
7
19
|
async connect() {
|
|
8
|
-
this.
|
|
9
|
-
this.idCounter = 1;
|
|
20
|
+
this.connected = true;
|
|
10
21
|
}
|
|
11
22
|
async disconnect() {
|
|
12
|
-
this.
|
|
23
|
+
this.connected = false;
|
|
24
|
+
}
|
|
25
|
+
isConnected() {
|
|
26
|
+
return this.connected;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Returns a new instance for a different collection while sharing the same data array.
|
|
30
|
+
*/
|
|
31
|
+
table(name) {
|
|
32
|
+
const newDriver = new MemoryDriver({
|
|
33
|
+
collectionName: name,
|
|
34
|
+
data: this.data,
|
|
35
|
+
idCounter: this.idCounter
|
|
36
|
+
});
|
|
37
|
+
newDriver.connected = this.connected;
|
|
38
|
+
return newDriver;
|
|
13
39
|
}
|
|
14
40
|
async set(data) {
|
|
15
41
|
const record = {
|
|
16
|
-
_id: this.idCounter++,
|
|
42
|
+
_id: this.idCounter.value++,
|
|
17
43
|
...data,
|
|
44
|
+
__col__: this.collectionName,
|
|
18
45
|
_createdAt: new Date().toISOString(),
|
|
19
46
|
};
|
|
20
47
|
this.data.push(record);
|
|
21
48
|
return record;
|
|
22
49
|
}
|
|
23
50
|
async get(query) {
|
|
24
|
-
return this.data.filter(
|
|
51
|
+
return this.data.filter(r => r.__col__ === this.collectionName && this.matches(r, query));
|
|
25
52
|
}
|
|
26
53
|
async getOne(query) {
|
|
27
|
-
const record = this.data.find(
|
|
54
|
+
const record = this.data.find(r => r.__col__ === this.collectionName && this.matches(r, query));
|
|
28
55
|
return record || null;
|
|
29
56
|
}
|
|
30
57
|
async update(query, data) {
|
|
31
58
|
let count = 0;
|
|
32
|
-
this.data
|
|
33
|
-
if (this.matches(
|
|
59
|
+
this.data.forEach((r, i) => {
|
|
60
|
+
if (r.__col__ === this.collectionName && this.matches(r, query)) {
|
|
34
61
|
count++;
|
|
35
|
-
|
|
36
|
-
...record,
|
|
37
|
-
...data,
|
|
38
|
-
_updatedAt: new Date().toISOString(),
|
|
39
|
-
};
|
|
62
|
+
this.data[i] = { ...r, ...data, _updatedAt: new Date().toISOString() };
|
|
40
63
|
}
|
|
41
|
-
return record;
|
|
42
64
|
});
|
|
43
65
|
return count;
|
|
44
66
|
}
|
|
45
67
|
async delete(query) {
|
|
46
|
-
const
|
|
47
|
-
this.data = this.data.filter(
|
|
48
|
-
return
|
|
68
|
+
const initialLen = this.data.length;
|
|
69
|
+
this.data = this.data.filter(r => !(r.__col__ === this.collectionName && this.matches(r, query)));
|
|
70
|
+
return initialLen - this.data.length;
|
|
49
71
|
}
|
|
50
72
|
async exists(query) {
|
|
51
|
-
return this.data.some(
|
|
73
|
+
return this.data.some(r => r.__col__ === this.collectionName && this.matches(r, query));
|
|
52
74
|
}
|
|
53
75
|
async count(query) {
|
|
54
|
-
return this.
|
|
76
|
+
return this.get(query).then(res => res.length);
|
|
55
77
|
}
|
|
56
78
|
matches(record, query) {
|
|
57
|
-
if (Object.keys(query).length === 0)
|
|
79
|
+
if (Object.keys(query).length === 0)
|
|
58
80
|
return true;
|
|
59
|
-
}
|
|
60
81
|
return Object.keys(query).every(key => {
|
|
61
|
-
const
|
|
62
|
-
const
|
|
63
|
-
if (typeof
|
|
64
|
-
|
|
65
|
-
return this.matches(recordValue, queryValue);
|
|
66
|
-
}
|
|
67
|
-
return false;
|
|
82
|
+
const qVal = query[key];
|
|
83
|
+
const rVal = record[key];
|
|
84
|
+
if (typeof qVal === 'object' && qVal !== null && typeof rVal === 'object' && rVal !== null) {
|
|
85
|
+
return this.matches(rVal, qVal);
|
|
68
86
|
}
|
|
69
|
-
return
|
|
87
|
+
return rVal === qVal;
|
|
70
88
|
});
|
|
71
89
|
}
|
|
72
|
-
async getAll() {
|
|
73
|
-
return [...this.data];
|
|
74
|
-
}
|
|
75
90
|
async clear() {
|
|
76
|
-
this.data =
|
|
77
|
-
this.idCounter = 1;
|
|
91
|
+
this.data = this.data.filter(r => r.__col__ !== this.collectionName);
|
|
78
92
|
}
|
|
79
93
|
}
|
|
80
94
|
exports.MemoryDriver = MemoryDriver;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MemoryDriver.js","sourceRoot":"","sources":["../../src/drivers/MemoryDriver.ts"],"names":[],"mappings":";;;AAEA,MAAa,YAAY;IACf,IAAI,
|
|
1
|
+
{"version":3,"file":"MemoryDriver.js","sourceRoot":"","sources":["../../src/drivers/MemoryDriver.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
1
|
export { Hawiah } from './Hawiah';
|
|
2
|
+
export { HawiahNext } from './HawiahNext';
|
|
2
3
|
export { IDriver, Query, Data } from './interfaces/IDriver';
|
|
3
4
|
export { MemoryDriver } from './drivers/MemoryDriver';
|
|
5
|
+
export { Schema, SchemaDefinition, SchemaType, SchemaField, DataTypes } from './Schema';
|
package/dist/index.js
CHANGED
|
@@ -1,8 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.MemoryDriver = exports.Hawiah = void 0;
|
|
3
|
+
exports.DataTypes = exports.Schema = exports.MemoryDriver = exports.HawiahNext = exports.Hawiah = void 0;
|
|
4
4
|
var Hawiah_1 = require("./Hawiah");
|
|
5
5
|
Object.defineProperty(exports, "Hawiah", { enumerable: true, get: function () { return Hawiah_1.Hawiah; } });
|
|
6
|
+
var HawiahNext_1 = require("./HawiahNext");
|
|
7
|
+
Object.defineProperty(exports, "HawiahNext", { enumerable: true, get: function () { return HawiahNext_1.HawiahNext; } });
|
|
6
8
|
var MemoryDriver_1 = require("./drivers/MemoryDriver");
|
|
7
9
|
Object.defineProperty(exports, "MemoryDriver", { enumerable: true, get: function () { return MemoryDriver_1.MemoryDriver; } });
|
|
10
|
+
var Schema_1 = require("./Schema");
|
|
11
|
+
Object.defineProperty(exports, "Schema", { enumerable: true, get: function () { return Schema_1.Schema; } });
|
|
12
|
+
Object.defineProperty(exports, "DataTypes", { enumerable: true, get: function () { return Schema_1.DataTypes; } });
|
|
8
13
|
//# 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":";;;AAAA,mCAAkC;AAAzB,gGAAA,MAAM,OAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,mCAAkC;AAAzB,gGAAA,MAAM,OAAA;AACf,2CAA0C;AAAjC,wGAAA,UAAU,OAAA;AAInB,uDAAsD;AAA7C,4GAAA,YAAY,OAAA;AACrB,mCAAwF;AAA/E,gGAAA,MAAM,OAAA;AAA6C,mGAAA,SAAS,OAAA"}
|
|
@@ -1,68 +1,80 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Query interface for filtering data
|
|
2
|
+
* Query interface for filtering and selecting data
|
|
3
3
|
*/
|
|
4
4
|
export interface Query {
|
|
5
5
|
[key: string]: any;
|
|
6
6
|
}
|
|
7
7
|
/**
|
|
8
|
-
*
|
|
8
|
+
* Generic data interface representing a database record
|
|
9
9
|
*/
|
|
10
10
|
export interface Data {
|
|
11
11
|
[key: string]: any;
|
|
12
12
|
}
|
|
13
13
|
/**
|
|
14
|
-
*
|
|
14
|
+
* The standard interface that all database drivers must implement.
|
|
15
|
+
* Supports connection pooling, CRUD operations, and schema validation.
|
|
15
16
|
*/
|
|
16
17
|
export interface IDriver {
|
|
17
18
|
/**
|
|
18
|
-
*
|
|
19
|
+
* The type of database (sql or nosql).
|
|
20
|
+
*/
|
|
21
|
+
dbType?: 'sql' | 'nosql';
|
|
22
|
+
/**
|
|
23
|
+
* Establishes a connection to the database.
|
|
19
24
|
*/
|
|
20
25
|
connect(): Promise<void>;
|
|
21
26
|
/**
|
|
22
|
-
*
|
|
27
|
+
* Closes the database connection.
|
|
23
28
|
*/
|
|
24
29
|
disconnect(): Promise<void>;
|
|
25
30
|
/**
|
|
26
|
-
*
|
|
27
|
-
|
|
28
|
-
|
|
31
|
+
* Checks if the driver is currently connected.
|
|
32
|
+
*/
|
|
33
|
+
isConnected?(): boolean;
|
|
34
|
+
/**
|
|
35
|
+
* Creates a new driver instance for a specific table/collection, sharing the same connection.
|
|
36
|
+
* @param name The name of the table or collection
|
|
37
|
+
*/
|
|
38
|
+
table?(name: string): IDriver;
|
|
39
|
+
/**
|
|
40
|
+
* Inserts a new record into the database.
|
|
41
|
+
* @param data The data to insert
|
|
29
42
|
*/
|
|
30
43
|
set(data: Data): Promise<Data>;
|
|
31
44
|
/**
|
|
32
|
-
*
|
|
33
|
-
* @param query
|
|
34
|
-
* @returns Array of matching records
|
|
45
|
+
* Retrieves records matching the query.
|
|
46
|
+
* @param query Filter criteria
|
|
35
47
|
*/
|
|
36
48
|
get(query: Query): Promise<Data[]>;
|
|
37
49
|
/**
|
|
38
|
-
*
|
|
39
|
-
* @param query
|
|
40
|
-
* @param data
|
|
41
|
-
* @returns Number of updated records
|
|
50
|
+
* Updates records matching the query.
|
|
51
|
+
* @param query Filter criteria
|
|
52
|
+
* @param data Data to update
|
|
42
53
|
*/
|
|
43
54
|
update(query: Query, data: Data): Promise<number>;
|
|
44
55
|
/**
|
|
45
|
-
*
|
|
46
|
-
* @param query
|
|
47
|
-
* @returns Number of deleted records
|
|
56
|
+
* Deletes records matching the query.
|
|
57
|
+
* @param query Filter criteria
|
|
48
58
|
*/
|
|
49
59
|
delete(query: Query): Promise<number>;
|
|
50
60
|
/**
|
|
51
|
-
*
|
|
52
|
-
* @param query
|
|
53
|
-
* @returns A single matching record or null
|
|
61
|
+
* Retrieves a single record matching the query.
|
|
62
|
+
* @param query Filter criteria
|
|
54
63
|
*/
|
|
55
64
|
getOne(query: Query): Promise<Data | null>;
|
|
56
65
|
/**
|
|
57
|
-
*
|
|
58
|
-
* @param query
|
|
59
|
-
* @returns True if exists, false otherwise
|
|
66
|
+
* Checks if any record matches the query.
|
|
67
|
+
* @param query Filter criteria
|
|
60
68
|
*/
|
|
61
69
|
exists(query: Query): Promise<boolean>;
|
|
62
70
|
/**
|
|
63
|
-
*
|
|
64
|
-
* @param query
|
|
65
|
-
* @returns Number of matching records
|
|
71
|
+
* Counts the number of records matching the query.
|
|
72
|
+
* @param query Filter criteria
|
|
66
73
|
*/
|
|
67
74
|
count(query: Query): Promise<number>;
|
|
75
|
+
/**
|
|
76
|
+
* Sets the schema for the driver (optional support).
|
|
77
|
+
* @param schema The schema definition
|
|
78
|
+
*/
|
|
79
|
+
setSchema?(schema: any): void;
|
|
68
80
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hawiah/core",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.2.4",
|
|
4
4
|
"description": "Core package for Hawiah - Schema-less database abstraction layer with relationships and DataLoader batching",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -35,11 +35,11 @@
|
|
|
35
35
|
"license": "MIT",
|
|
36
36
|
"repository": {
|
|
37
37
|
"type": "git",
|
|
38
|
-
"url": "https://github.com/
|
|
38
|
+
"url": "git+https://github.com/hawiahjs/core.git"
|
|
39
39
|
},
|
|
40
|
-
"homepage": "https://
|
|
40
|
+
"homepage": "https://github.com/hawiahjs/core#readme",
|
|
41
41
|
"bugs": {
|
|
42
|
-
"url": "https://github.com/
|
|
42
|
+
"url": "https://github.com/hawiahjs/core/issues"
|
|
43
43
|
},
|
|
44
44
|
"dependencies": {
|
|
45
45
|
"dataloader": "^2.2.3"
|
|
@@ -48,4 +48,4 @@
|
|
|
48
48
|
"@types/node": "^20.0.0",
|
|
49
49
|
"typescript": "^5.0.0"
|
|
50
50
|
}
|
|
51
|
-
}
|
|
51
|
+
}
|