@moriajs/db 0.4.5 → 0.4.6

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 CHANGED
@@ -6,15 +6,28 @@ Database abstraction layer for MoriaJS.
6
6
 
7
7
  - **Kysely Integration**: Type-safe SQL query builder.
8
8
  - **Pongo Support**: Document API for PostgreSQL (JSONB).
9
- - **Multi-adapter**: Support for PostgreSQL and SQLite.
9
+ - **MongoDB Support**: Native MongoDB integration.
10
+ - **Multi-adapter**: Support for PostgreSQL, SQLite, and MongoDB.
10
11
 
11
12
  ## Usage
12
13
 
14
+ ### SQL (Kysely)
13
15
  ```ts
14
16
  import { createDatabase } from '@moriajs/db';
15
17
 
16
18
  const db = await createDatabase({
17
- type: 'postgres',
19
+ adapter: 'pg',
18
20
  url: process.env.DATABASE_URL
19
21
  });
20
22
  ```
23
+
24
+ ### Document (MongoDB)
25
+ ```ts
26
+ import { createDatabase } from '@moriajs/db';
27
+
28
+ const db = await createDatabase({
29
+ adapter: 'mongo',
30
+ url: 'mongodb://localhost:27017',
31
+ dbName: 'my_database'
32
+ });
33
+ ```
package/dist/index.d.ts CHANGED
@@ -3,14 +3,14 @@ export * from './types.js';
3
3
  /**
4
4
  * Supported database adapters.
5
5
  */
6
- export type DatabaseAdapterName = 'pg' | 'sqlite' | 'mysql';
6
+ export type DatabaseAdapterName = 'pg' | 'sqlite' | 'mysql' | 'mongo';
7
7
  /**
8
8
  * Configuration for creating a database connection.
9
9
  */
10
10
  export interface DatabaseConfig {
11
11
  /** Database adapter name to use */
12
12
  adapter: DatabaseAdapterName;
13
- /** Connection URL (for pg/mysql/pongo) */
13
+ /** Connection URL (for pg/mysql/pongo/mongo) */
14
14
  url?: string;
15
15
  /** File path (for sqlite) */
16
16
  filename?: string;
@@ -21,6 +21,8 @@ export interface DatabaseConfig {
21
21
  min?: number;
22
22
  max?: number;
23
23
  };
24
+ /** Database name (for mongo) */
25
+ dbName?: string;
24
26
  }
25
27
  /**
26
28
  * Kysely Adapter Implementation (SQL)
@@ -57,6 +59,24 @@ export declare class PongoAdapter implements MoriaDBAdapter {
57
59
  deleteOne(collection: string, filter: any): Promise<void>;
58
60
  raw<T>(): T;
59
61
  }
62
+ /**
63
+ * MongoDB Adapter Implementation
64
+ */
65
+ export declare class MongoAdapter implements MoriaDBAdapter {
66
+ private config;
67
+ private client;
68
+ constructor(config: DatabaseConfig);
69
+ connect(): Promise<void>;
70
+ disconnect(): Promise<void>;
71
+ private mapIdFilter;
72
+ private mapIdResult;
73
+ find<T extends Record<string, any> = any>(collection: string, filter?: any): Promise<T[]>;
74
+ findOne<T extends Record<string, any> = any>(collection: string, filter?: any): Promise<T | null>;
75
+ insertOne<T extends Record<string, any> = any>(collection: string, data: any): Promise<T>;
76
+ updateOne(collection: string, filter: any, data: any): Promise<void>;
77
+ deleteOne(collection: string, filter: any): Promise<void>;
78
+ raw<T>(): T;
79
+ }
60
80
  /**
61
81
  * Factory to create a MoriaDB instance.
62
82
  */
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,5 +1,6 @@
1
1
  import { Kysely, PostgresDialect, SqliteDialect } from 'kysely';
2
2
  import { pongoClient } from '@event-driven-io/pongo';
3
+ import { MongoClient } from 'mongodb';
3
4
  import { MoriaDB } from './types.js';
4
5
  export * from './types.js';
5
6
  /**
@@ -151,12 +152,86 @@ export class PongoAdapter {
151
152
  return this.client;
152
153
  }
153
154
  }
155
+ /**
156
+ * MongoDB Adapter Implementation
157
+ */
158
+ export class MongoAdapter {
159
+ config;
160
+ client = null;
161
+ constructor(config) {
162
+ this.config = config;
163
+ }
164
+ async connect() {
165
+ if (!this.config.url) {
166
+ throw new Error('@moriajs/db: MongoDB connection URL is required');
167
+ }
168
+ this.client = new MongoClient(this.config.url);
169
+ await this.client.connect();
170
+ }
171
+ async disconnect() {
172
+ if (this.client) {
173
+ await this.client.close();
174
+ }
175
+ }
176
+ mapIdFilter(filter) {
177
+ if (!filter || typeof filter !== 'object')
178
+ return filter;
179
+ const newFilter = { ...filter };
180
+ if ('id' in newFilter) {
181
+ newFilter._id = newFilter.id;
182
+ delete newFilter.id;
183
+ }
184
+ return newFilter;
185
+ }
186
+ mapIdResult(result) {
187
+ if (!result)
188
+ return result;
189
+ if (Array.isArray(result)) {
190
+ return result.map(item => this.mapIdResult(item));
191
+ }
192
+ if (typeof result === 'object' && '_id' in result) {
193
+ const { _id, ...rest } = result;
194
+ return { ...rest, id: _id };
195
+ }
196
+ return result;
197
+ }
198
+ async find(collection, filter = {}) {
199
+ const db = this.client.db(this.config.dbName);
200
+ const results = await db.collection(collection).find(this.mapIdFilter(filter)).toArray();
201
+ return this.mapIdResult(results);
202
+ }
203
+ async findOne(collection, filter = {}) {
204
+ const db = this.client.db(this.config.dbName);
205
+ const result = await db.collection(collection).findOne(this.mapIdFilter(filter));
206
+ return this.mapIdResult(result);
207
+ }
208
+ async insertOne(collection, data) {
209
+ const db = this.client.db(this.config.dbName);
210
+ const result = await db.collection(collection).insertOne(data);
211
+ const inserted = await db.collection(collection).findOne({ _id: result.insertedId });
212
+ return this.mapIdResult(inserted);
213
+ }
214
+ async updateOne(collection, filter, data) {
215
+ const db = this.client.db(this.config.dbName);
216
+ await db.collection(collection).updateOne(this.mapIdFilter(filter), { $set: data });
217
+ }
218
+ async deleteOne(collection, filter) {
219
+ const db = this.client.db(this.config.dbName);
220
+ await db.collection(collection).deleteOne(this.mapIdFilter(filter));
221
+ }
222
+ raw() {
223
+ return this.client;
224
+ }
225
+ }
154
226
  /**
155
227
  * Factory to create a MoriaDB instance.
156
228
  */
157
229
  export async function createDatabase(config) {
158
230
  let adapter;
159
- if (config.usePongo && config.adapter === 'pg') {
231
+ if (config.adapter === 'mongo') {
232
+ adapter = new MongoAdapter(config);
233
+ }
234
+ else if (config.usePongo && config.adapter === 'pg') {
160
235
  adapter = new PongoAdapter(config);
161
236
  }
162
237
  else {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@moriajs/db",
3
- "version": "0.4.5",
3
+ "version": "0.4.6",
4
4
  "type": "module",
5
5
  "description": "MoriaJS database — Kysely adapters with kysely-schema integration",
6
6
  "main": "./dist/index.js",
@@ -13,7 +13,8 @@
13
13
  },
14
14
  "dependencies": {
15
15
  "kysely": "^0.27.0",
16
- "@event-driven-io/pongo": "^0.16.11"
16
+ "@event-driven-io/pongo": "^0.16.11",
17
+ "mongodb": "^6.10.0"
17
18
  },
18
19
  "optionalDependencies": {
19
20
  "pg": "^8.13.0",
package/src/index.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  import { Kysely, PostgresDialect, SqliteDialect } from 'kysely';
2
2
  import { pongoClient, PongoClient } from '@event-driven-io/pongo';
3
+ import { MongoClient } from 'mongodb';
3
4
  import { MoriaDB, MoriaDBAdapter } from './types.js';
4
5
 
5
6
  export * from './types.js';
@@ -7,7 +8,7 @@ export * from './types.js';
7
8
  /**
8
9
  * Supported database adapters.
9
10
  */
10
- export type DatabaseAdapterName = 'pg' | 'sqlite' | 'mysql';
11
+ export type DatabaseAdapterName = 'pg' | 'sqlite' | 'mysql' | 'mongo';
11
12
 
12
13
  /**
13
14
  * Configuration for creating a database connection.
@@ -15,7 +16,7 @@ export type DatabaseAdapterName = 'pg' | 'sqlite' | 'mysql';
15
16
  export interface DatabaseConfig {
16
17
  /** Database adapter name to use */
17
18
  adapter: DatabaseAdapterName;
18
- /** Connection URL (for pg/mysql/pongo) */
19
+ /** Connection URL (for pg/mysql/pongo/mongo) */
19
20
  url?: string;
20
21
  /** File path (for sqlite) */
21
22
  filename?: string;
@@ -26,6 +27,8 @@ export interface DatabaseConfig {
26
27
  min?: number;
27
28
  max?: number;
28
29
  };
30
+ /** Database name (for mongo) */
31
+ dbName?: string;
29
32
  }
30
33
 
31
34
  /**
@@ -192,13 +195,93 @@ export class PongoAdapter implements MoriaDBAdapter {
192
195
  }
193
196
  }
194
197
 
198
+ /**
199
+ * MongoDB Adapter Implementation
200
+ */
201
+ export class MongoAdapter implements MoriaDBAdapter {
202
+ private client: MongoClient | null = null;
203
+
204
+ constructor(private config: DatabaseConfig) { }
205
+
206
+ async connect(): Promise<void> {
207
+ if (!this.config.url) {
208
+ throw new Error('@moriajs/db: MongoDB connection URL is required');
209
+ }
210
+ this.client = new MongoClient(this.config.url);
211
+ await this.client.connect();
212
+ }
213
+
214
+ async disconnect(): Promise<void> {
215
+ if (this.client) {
216
+ await this.client.close();
217
+ }
218
+ }
219
+
220
+ private mapIdFilter(filter: any): any {
221
+ if (!filter || typeof filter !== 'object') return filter;
222
+ const newFilter = { ...filter };
223
+ if ('id' in newFilter) {
224
+ newFilter._id = newFilter.id;
225
+ delete newFilter.id;
226
+ }
227
+ return newFilter;
228
+ }
229
+
230
+ private mapIdResult(result: any): any {
231
+ if (!result) return result;
232
+ if (Array.isArray(result)) {
233
+ return result.map(item => this.mapIdResult(item));
234
+ }
235
+ if (typeof result === 'object' && '_id' in result) {
236
+ const { _id, ...rest } = result;
237
+ return { ...rest, id: _id };
238
+ }
239
+ return result;
240
+ }
241
+
242
+ async find<T extends Record<string, any> = any>(collection: string, filter: any = {}): Promise<T[]> {
243
+ const db = this.client!.db(this.config.dbName);
244
+ const results = await db.collection(collection).find(this.mapIdFilter(filter)).toArray();
245
+ return this.mapIdResult(results);
246
+ }
247
+
248
+ async findOne<T extends Record<string, any> = any>(collection: string, filter: any = {}): Promise<T | null> {
249
+ const db = this.client!.db(this.config.dbName);
250
+ const result = await db.collection(collection).findOne(this.mapIdFilter(filter));
251
+ return this.mapIdResult(result);
252
+ }
253
+
254
+ async insertOne<T extends Record<string, any> = any>(collection: string, data: any): Promise<T> {
255
+ const db = this.client!.db(this.config.dbName);
256
+ const result = await db.collection(collection).insertOne(data);
257
+ const inserted = await db.collection(collection).findOne({ _id: result.insertedId });
258
+ return this.mapIdResult(inserted);
259
+ }
260
+
261
+ async updateOne(collection: string, filter: any, data: any): Promise<void> {
262
+ const db = this.client!.db(this.config.dbName);
263
+ await db.collection(collection).updateOne(this.mapIdFilter(filter), { $set: data });
264
+ }
265
+
266
+ async deleteOne(collection: string, filter: any): Promise<void> {
267
+ const db = this.client!.db(this.config.dbName);
268
+ await db.collection(collection).deleteOne(this.mapIdFilter(filter));
269
+ }
270
+
271
+ raw<T>(): T {
272
+ return this.client as unknown as T;
273
+ }
274
+ }
275
+
195
276
  /**
196
277
  * Factory to create a MoriaDB instance.
197
278
  */
198
279
  export async function createDatabase(config: DatabaseConfig): Promise<MoriaDB> {
199
280
  let adapter: MoriaDBAdapter;
200
281
 
201
- if (config.usePongo && config.adapter === 'pg') {
282
+ if (config.adapter === 'mongo') {
283
+ adapter = new MongoAdapter(config);
284
+ } else if (config.usePongo && config.adapter === 'pg') {
202
285
  adapter = new PongoAdapter(config);
203
286
  } else {
204
287
  adapter = new KyselyAdapter(config);