@hawiah/core 1.1.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 +92 -60
- package/dist/Hawiah.d.ts +25 -7
- package/dist/Hawiah.js +61 -12
- 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 +12 -5
- package/dist/Schema.js +15 -12
- package/dist/Schema.js.map +1 -1
- package/dist/drivers/MemoryDriver.d.ts +13 -2
- package/dist/drivers/MemoryDriver.js +49 -36
- package/dist/drivers/MemoryDriver.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/interfaces/IDriver.d.ts +36 -33
- package/package.json +5 -5
package/README.md
CHANGED
|
@@ -1,91 +1,123 @@
|
|
|
1
|
-
#
|
|
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
6
|
|
|
7
|
-
|
|
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.
|
|
8
12
|
|
|
9
|
-
##
|
|
13
|
+
## Installation
|
|
10
14
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
* **Powerful:** Define a Schema to get validation and structure.
|
|
15
|
-
* **Hybrid Storage:** On SQL drivers, schemas map to real columns for performance, while keeping a JSON column for flexibility.
|
|
16
|
-
* **Virtual Relationships:** define relationships between *different* databases/drivers without complex joins.
|
|
17
|
-
* **Zero Lock-in:** Switch from JSON files to PostgreSQL in seconds.
|
|
18
|
-
|
|
19
|
-
---
|
|
15
|
+
```bash
|
|
16
|
+
npm install @hawiah/core
|
|
17
|
+
```
|
|
20
18
|
|
|
21
|
-
|
|
19
|
+
Then install the driver of your choice:
|
|
22
20
|
|
|
23
21
|
```bash
|
|
24
|
-
npm install @hawiah/
|
|
25
|
-
#
|
|
26
|
-
npm install @hawiah/sqlite
|
|
27
|
-
#
|
|
22
|
+
npm install @hawiah/mongo
|
|
23
|
+
# OR
|
|
24
|
+
npm install @hawiah/sqlite
|
|
25
|
+
# OR
|
|
26
|
+
npm install @hawiah/firebase
|
|
28
27
|
```
|
|
29
28
|
|
|
30
|
-
##
|
|
29
|
+
## Usage Examples
|
|
31
30
|
|
|
32
|
-
|
|
33
|
-
|
|
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.
|
|
32
|
+
|
|
33
|
+
### 1. MongoDB
|
|
34
34
|
|
|
35
35
|
```javascript
|
|
36
|
-
|
|
37
|
-
|
|
36
|
+
import { Hawiah } from '@hawiah/core';
|
|
37
|
+
import { MongoDriver } from '@hawiah/mongo';
|
|
38
|
+
|
|
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
|
+
});
|
|
38
47
|
|
|
39
|
-
const
|
|
40
|
-
|
|
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
|
+
}
|
|
41
55
|
});
|
|
42
56
|
|
|
43
|
-
await db.connect();
|
|
44
|
-
await db.insert({ title: 'My Post', views: 100 }); // Just works!
|
|
57
|
+
await db.connect(); // Orchestrates the connection for all sharing instances
|
|
45
58
|
```
|
|
46
59
|
|
|
47
|
-
### 2.
|
|
48
|
-
Get validation and SQL performance where needed.
|
|
60
|
+
### 2. SQLite
|
|
49
61
|
|
|
50
62
|
```javascript
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
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
|
+
}
|
|
59
72
|
});
|
|
60
73
|
|
|
61
|
-
const
|
|
62
|
-
|
|
63
|
-
|
|
74
|
+
const logs = new Hawiah({
|
|
75
|
+
driver: SqliteDriver,
|
|
76
|
+
config: {
|
|
77
|
+
filename: './database.sqlite', // <--- Same Config = Same Connection
|
|
78
|
+
table: 'logs'
|
|
79
|
+
}
|
|
64
80
|
});
|
|
65
|
-
|
|
66
|
-
// Enforces structure & creates real SQL columns
|
|
67
|
-
await db.insert({ username: 'Ali' });
|
|
68
81
|
```
|
|
69
82
|
|
|
70
|
-
|
|
83
|
+
### 3. Firebase (Firestore)
|
|
71
84
|
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
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
|
+
});
|
|
102
|
+
```
|
|
82
103
|
|
|
83
|
-
|
|
104
|
+
## Next.js 16+ Support
|
|
84
105
|
|
|
85
|
-
|
|
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.
|
|
86
107
|
|
|
87
|
-
|
|
108
|
+
```typescript
|
|
109
|
+
// lib/db.ts
|
|
110
|
+
import { HawiahNext } from '@hawiah/core';
|
|
111
|
+
import { MongoDriver } from '@hawiah/mongo';
|
|
88
112
|
|
|
89
|
-
|
|
113
|
+
export const dbEvents = new HawiahNext({
|
|
114
|
+
driver: MongoDriver,
|
|
115
|
+
config: {
|
|
116
|
+
uri: process.env.MONGO_URI,
|
|
117
|
+
collectionName: 'events'
|
|
118
|
+
}
|
|
119
|
+
});
|
|
120
|
+
```
|
|
90
121
|
|
|
91
|
-
|
|
122
|
+
## License
|
|
123
|
+
MIT
|
package/dist/Hawiah.d.ts
CHANGED
|
@@ -1,23 +1,34 @@
|
|
|
1
1
|
import { IDriver, Query, Data } from './interfaces/IDriver';
|
|
2
2
|
import { Schema, SchemaDefinition } from './Schema';
|
|
3
|
+
import DataLoader from 'dataloader';
|
|
3
4
|
/**
|
|
4
5
|
* Hawiah: A lightweight, schema-less database abstraction layer.
|
|
5
6
|
* Designed to be friendly and easy to use.
|
|
6
7
|
*/
|
|
7
8
|
export declare class Hawiah {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
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;
|
|
13
22
|
/**
|
|
14
23
|
* Creates a new Hawiah instance.
|
|
15
24
|
* @param options - Configuration options
|
|
16
|
-
* @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
|
|
17
27
|
* @param options.schema - Optional schema definition
|
|
18
28
|
*/
|
|
19
29
|
constructor(options: {
|
|
20
|
-
driver: IDriver;
|
|
30
|
+
driver: IDriver | (new (config: any) => IDriver);
|
|
31
|
+
config?: any;
|
|
21
32
|
schema?: Schema | SchemaDefinition;
|
|
22
33
|
});
|
|
23
34
|
/**
|
|
@@ -354,3 +365,10 @@ export declare class Hawiah {
|
|
|
354
365
|
*/
|
|
355
366
|
private validateData;
|
|
356
367
|
}
|
|
368
|
+
interface RelationConfig {
|
|
369
|
+
target: Hawiah;
|
|
370
|
+
localKey: string;
|
|
371
|
+
foreignKey: string;
|
|
372
|
+
type: 'one' | 'many';
|
|
373
|
+
}
|
|
374
|
+
export {};
|
package/dist/Hawiah.js
CHANGED
|
@@ -16,17 +16,61 @@ class Hawiah {
|
|
|
16
16
|
relations = new Map();
|
|
17
17
|
loaders = new Map();
|
|
18
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
|
+
}
|
|
19
44
|
/**
|
|
20
45
|
* Creates a new Hawiah instance.
|
|
21
46
|
* @param options - Configuration options
|
|
22
|
-
* @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
|
|
23
49
|
* @param options.schema - Optional schema definition
|
|
24
50
|
*/
|
|
25
51
|
constructor(options) {
|
|
26
|
-
|
|
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
|
+
}
|
|
27
72
|
if (options.schema) {
|
|
28
73
|
this.schema = options.schema instanceof Schema_1.Schema ? options.schema : new Schema_1.Schema(options.schema);
|
|
29
|
-
// Pass the schema to the driver if it supports it (for SQL drivers to build tables)
|
|
30
74
|
if (this.driver.setSchema && this.schema) {
|
|
31
75
|
this.driver.setSchema(this.schema);
|
|
32
76
|
}
|
|
@@ -39,7 +83,19 @@ class Hawiah {
|
|
|
39
83
|
if (this.isConnected) {
|
|
40
84
|
return;
|
|
41
85
|
}
|
|
42
|
-
|
|
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;
|
|
43
99
|
this.isConnected = true;
|
|
44
100
|
}
|
|
45
101
|
/**
|
|
@@ -155,16 +211,11 @@ class Hawiah {
|
|
|
155
211
|
this.ensureConnected();
|
|
156
212
|
const existing = await this.driver.getOne(query);
|
|
157
213
|
if (existing) {
|
|
158
|
-
// Update: validate partial
|
|
159
214
|
const validated = this.validateData(data, true);
|
|
160
215
|
await this.driver.update(query, validated);
|
|
161
216
|
return { ...existing, ...validated };
|
|
162
217
|
}
|
|
163
218
|
else {
|
|
164
|
-
// Insert: validate full (merging query + data for validation context if needed, but data is the main payload)
|
|
165
|
-
// Usually save assumes query IS the id or unique key, which might not be in 'data'.
|
|
166
|
-
// We should validate the combined object or just data?
|
|
167
|
-
// Let's validate the combined object since that's what's being set.
|
|
168
219
|
const fullData = { ...query, ...data };
|
|
169
220
|
const validated = this.validateData(fullData);
|
|
170
221
|
return await this.driver.set(validated);
|
|
@@ -404,7 +455,6 @@ class Hawiah {
|
|
|
404
455
|
}
|
|
405
456
|
const currentValue = Number(record[field]) || 0;
|
|
406
457
|
const newValue = currentValue + amount;
|
|
407
|
-
// Use this.update to ensure validation
|
|
408
458
|
await this.update(query, { [field]: newValue });
|
|
409
459
|
return newValue;
|
|
410
460
|
}
|
|
@@ -435,7 +485,7 @@ class Hawiah {
|
|
|
435
485
|
record[field] = [];
|
|
436
486
|
}
|
|
437
487
|
record[field].push(value);
|
|
438
|
-
const validated = this.validateData(record, false);
|
|
488
|
+
const validated = this.validateData(record, false);
|
|
439
489
|
await this.driver.update(query, validated);
|
|
440
490
|
count++;
|
|
441
491
|
}
|
|
@@ -541,7 +591,6 @@ class Hawiah {
|
|
|
541
591
|
for (const record of records) {
|
|
542
592
|
if (field in record) {
|
|
543
593
|
delete record[field];
|
|
544
|
-
// Full validation ensures we didn't delete a required field
|
|
545
594
|
const validated = this.validateData(record, false);
|
|
546
595
|
await this.driver.update(query, validated);
|
|
547
596
|
count++;
|
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
CHANGED
|
@@ -26,19 +26,26 @@ export interface SchemaField {
|
|
|
26
26
|
export interface SchemaDefinition {
|
|
27
27
|
[key: string]: SchemaField | SchemaType;
|
|
28
28
|
}
|
|
29
|
+
/**
|
|
30
|
+
* Ensures data integrity by validating input against a defined structure.
|
|
31
|
+
*/
|
|
29
32
|
export declare class Schema {
|
|
30
33
|
private definition;
|
|
31
34
|
constructor(definition: SchemaDefinition);
|
|
32
35
|
/**
|
|
33
|
-
*
|
|
36
|
+
* Returns the raw schema definition.
|
|
34
37
|
*/
|
|
35
38
|
getDefinition(): SchemaDefinition;
|
|
36
39
|
/**
|
|
37
40
|
* Validates and processes the data against the schema.
|
|
38
|
-
*
|
|
39
|
-
*
|
|
40
|
-
*
|
|
41
|
-
*
|
|
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.
|
|
42
49
|
*/
|
|
43
50
|
validate(data: any, isPartial?: boolean): any;
|
|
44
51
|
private checkType;
|
package/dist/Schema.js
CHANGED
|
@@ -20,46 +20,49 @@ exports.DataTypes = {
|
|
|
20
20
|
URL: 'url',
|
|
21
21
|
ANY: 'any',
|
|
22
22
|
};
|
|
23
|
+
/**
|
|
24
|
+
* Ensures data integrity by validating input against a defined structure.
|
|
25
|
+
*/
|
|
23
26
|
class Schema {
|
|
24
27
|
definition;
|
|
25
28
|
constructor(definition) {
|
|
26
29
|
this.definition = definition;
|
|
27
30
|
}
|
|
28
31
|
/**
|
|
29
|
-
*
|
|
32
|
+
* Returns the raw schema definition.
|
|
30
33
|
*/
|
|
31
34
|
getDefinition() {
|
|
32
35
|
return this.definition;
|
|
33
36
|
}
|
|
34
37
|
/**
|
|
35
38
|
* Validates and processes the data against the schema.
|
|
36
|
-
*
|
|
37
|
-
*
|
|
38
|
-
*
|
|
39
|
-
*
|
|
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.
|
|
40
47
|
*/
|
|
41
48
|
validate(data, isPartial = false) {
|
|
42
49
|
const validatedData = { ...data };
|
|
43
50
|
for (const key in this.definition) {
|
|
44
51
|
let rule = this.definition[key];
|
|
45
|
-
// Normalize rule if it's just a type string
|
|
46
52
|
if (typeof rule === 'string') {
|
|
47
53
|
rule = { type: rule };
|
|
48
54
|
}
|
|
49
55
|
let value = validatedData[key];
|
|
50
|
-
//
|
|
51
|
-
// Apply default if undefined (only if not partial, OR if partial and field is undefined but we want defaults?
|
|
52
|
-
// Usually defaults are for creation. Let's skip defaults on partial update unless specifically needed.
|
|
53
|
-
// For simplicity: skip defaults on partial if value is missing)
|
|
56
|
+
// Apply default value if missing and not in partial mode
|
|
54
57
|
if (!isPartial && value === undefined && rule.default !== undefined) {
|
|
55
58
|
value = rule.default;
|
|
56
59
|
validatedData[key] = value;
|
|
57
60
|
}
|
|
58
|
-
// Check required
|
|
61
|
+
// Check required fields
|
|
59
62
|
if (!isPartial && rule.required && (value === undefined || value === null)) {
|
|
60
63
|
throw new Error(`Validation Error: Field "${key}" is required.`);
|
|
61
64
|
}
|
|
62
|
-
// Type
|
|
65
|
+
// Validate Type
|
|
63
66
|
if (value !== undefined && value !== null && rule.type !== 'any') {
|
|
64
67
|
if (!this.checkType(value, rule.type)) {
|
|
65
68
|
throw new Error(`Validation Error: Field "${key}" expected type ${rule.type}.`);
|
package/dist/Schema.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Schema.js","sourceRoot":"","sources":["../src/Schema.ts"],"names":[],"mappings":";;;AAWa,QAAA,SAAS,GAAG;IACrB,MAAM,EAAE,QAAsB;IAC9B,IAAI,EAAE,MAAoB;IAC1B,IAAI,EAAE,MAAoB;IAC1B,MAAM,EAAE,QAAsB;IAC9B,OAAO,EAAE,SAAuB;IAChC,KAAK,EAAE,OAAqB;IAC5B,MAAM,EAAE,QAAsB;IAC9B,OAAO,EAAE,SAAuB;IAChC,IAAI,EAAE,MAAoB;IAC1B,KAAK,EAAE,OAAqB;IAC5B,MAAM,EAAE,QAAsB;IAC9B,IAAI,EAAE,MAAoB;IAC1B,IAAI,EAAE,MAAoB;IAC1B,IAAI,EAAE,MAAoB;IAC1B,KAAK,EAAE,OAAqB;IAC5B,GAAG,EAAE,KAAmB;IACxB,GAAG,EAAE,KAAmB;CAC3B,CAAC;AAYF,MAAa,MAAM;IACP,UAAU,CAAmB;IAErC,YAAY,UAA4B;QACpC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IACjC,CAAC;IAED;;OAEG;IACH,aAAa;QACT,OAAO,IAAI,CAAC,UAAU,CAAC;IAC3B,CAAC;IAED
|
|
1
|
+
{"version":3,"file":"Schema.js","sourceRoot":"","sources":["../src/Schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +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;
|
|
5
|
-
|
|
9
|
+
private connected;
|
|
10
|
+
private collectionName;
|
|
11
|
+
dbType: 'nosql';
|
|
12
|
+
constructor(options?: any);
|
|
6
13
|
connect(): Promise<void>;
|
|
7
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;
|
|
8
20
|
set(data: Data): Promise<Data>;
|
|
9
21
|
get(query: Query): Promise<Data[]>;
|
|
10
22
|
getOne(query: Query): Promise<Data | null>;
|
|
@@ -13,6 +25,5 @@ export declare class MemoryDriver implements IDriver {
|
|
|
13
25
|
exists(query: Query): Promise<boolean>;
|
|
14
26
|
count(query: Query): Promise<number>;
|
|
15
27
|
private matches;
|
|
16
|
-
getAll(): Promise<Data[]>;
|
|
17
28
|
clear(): Promise<void>;
|
|
18
29
|
}
|
|
@@ -1,81 +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;
|
|
7
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
|
+
}
|
|
8
19
|
async connect() {
|
|
9
|
-
this.
|
|
10
|
-
this.idCounter = 1;
|
|
20
|
+
this.connected = true;
|
|
11
21
|
}
|
|
12
22
|
async disconnect() {
|
|
13
|
-
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;
|
|
14
39
|
}
|
|
15
40
|
async set(data) {
|
|
16
41
|
const record = {
|
|
17
|
-
_id: this.idCounter++,
|
|
42
|
+
_id: this.idCounter.value++,
|
|
18
43
|
...data,
|
|
44
|
+
__col__: this.collectionName,
|
|
19
45
|
_createdAt: new Date().toISOString(),
|
|
20
46
|
};
|
|
21
47
|
this.data.push(record);
|
|
22
48
|
return record;
|
|
23
49
|
}
|
|
24
50
|
async get(query) {
|
|
25
|
-
return this.data.filter(
|
|
51
|
+
return this.data.filter(r => r.__col__ === this.collectionName && this.matches(r, query));
|
|
26
52
|
}
|
|
27
53
|
async getOne(query) {
|
|
28
|
-
const record = this.data.find(
|
|
54
|
+
const record = this.data.find(r => r.__col__ === this.collectionName && this.matches(r, query));
|
|
29
55
|
return record || null;
|
|
30
56
|
}
|
|
31
57
|
async update(query, data) {
|
|
32
58
|
let count = 0;
|
|
33
|
-
this.data
|
|
34
|
-
if (this.matches(
|
|
59
|
+
this.data.forEach((r, i) => {
|
|
60
|
+
if (r.__col__ === this.collectionName && this.matches(r, query)) {
|
|
35
61
|
count++;
|
|
36
|
-
|
|
37
|
-
...record,
|
|
38
|
-
...data,
|
|
39
|
-
_updatedAt: new Date().toISOString(),
|
|
40
|
-
};
|
|
62
|
+
this.data[i] = { ...r, ...data, _updatedAt: new Date().toISOString() };
|
|
41
63
|
}
|
|
42
|
-
return record;
|
|
43
64
|
});
|
|
44
65
|
return count;
|
|
45
66
|
}
|
|
46
67
|
async delete(query) {
|
|
47
|
-
const
|
|
48
|
-
this.data = this.data.filter(
|
|
49
|
-
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;
|
|
50
71
|
}
|
|
51
72
|
async exists(query) {
|
|
52
|
-
return this.data.some(
|
|
73
|
+
return this.data.some(r => r.__col__ === this.collectionName && this.matches(r, query));
|
|
53
74
|
}
|
|
54
75
|
async count(query) {
|
|
55
|
-
return this.
|
|
76
|
+
return this.get(query).then(res => res.length);
|
|
56
77
|
}
|
|
57
78
|
matches(record, query) {
|
|
58
|
-
if (Object.keys(query).length === 0)
|
|
79
|
+
if (Object.keys(query).length === 0)
|
|
59
80
|
return true;
|
|
60
|
-
}
|
|
61
81
|
return Object.keys(query).every(key => {
|
|
62
|
-
const
|
|
63
|
-
const
|
|
64
|
-
if (typeof
|
|
65
|
-
|
|
66
|
-
return this.matches(recordValue, queryValue);
|
|
67
|
-
}
|
|
68
|
-
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);
|
|
69
86
|
}
|
|
70
|
-
return
|
|
87
|
+
return rVal === qVal;
|
|
71
88
|
});
|
|
72
89
|
}
|
|
73
|
-
async getAll() {
|
|
74
|
-
return [...this.data];
|
|
75
|
-
}
|
|
76
90
|
async clear() {
|
|
77
|
-
this.data =
|
|
78
|
-
this.idCounter = 1;
|
|
91
|
+
this.data = this.data.filter(r => r.__col__ !== this.collectionName);
|
|
79
92
|
}
|
|
80
93
|
}
|
|
81
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,4 +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';
|
|
4
5
|
export { Schema, SchemaDefinition, SchemaType, SchemaField, DataTypes } from './Schema';
|
package/dist/index.js
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.DataTypes = exports.Schema = 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; } });
|
|
8
10
|
var Schema_1 = require("./Schema");
|
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,77 +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>;
|
|
68
75
|
/**
|
|
69
|
-
*
|
|
70
|
-
*
|
|
71
|
-
*/
|
|
72
|
-
dbType?: 'sql' | 'nosql';
|
|
73
|
-
/**
|
|
74
|
-
* Optional: Set schema for the driver to use (e.g. for creating SQL tables)
|
|
76
|
+
* Sets the schema for the driver (optional support).
|
|
77
|
+
* @param schema The schema definition
|
|
75
78
|
*/
|
|
76
79
|
setSchema?(schema: any): void;
|
|
77
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
|
+
}
|