@dyrected/db-mongodb 0.0.1
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 +3 -0
- package/dist/index.d.ts +49 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +84 -0
- package/dist/index.js.map +1 -0
- package/package.json +22 -0
package/README.md
ADDED
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { DatabaseAdapter, PaginatedResult } from '@dyrected/core';
|
|
2
|
+
export interface MongoAdapterConfig {
|
|
3
|
+
url: string;
|
|
4
|
+
dbName: string;
|
|
5
|
+
}
|
|
6
|
+
export declare class MongoAdapter implements DatabaseAdapter {
|
|
7
|
+
private client;
|
|
8
|
+
private db;
|
|
9
|
+
constructor(config: MongoAdapterConfig);
|
|
10
|
+
private init;
|
|
11
|
+
private getCollectionName;
|
|
12
|
+
private getGlobalCollection;
|
|
13
|
+
find(params: {
|
|
14
|
+
collection: string;
|
|
15
|
+
where?: any;
|
|
16
|
+
limit?: number;
|
|
17
|
+
page?: number;
|
|
18
|
+
}): Promise<PaginatedResult>;
|
|
19
|
+
findOne(params: {
|
|
20
|
+
collection: string;
|
|
21
|
+
id: string;
|
|
22
|
+
}): Promise<{
|
|
23
|
+
id: string;
|
|
24
|
+
} | null>;
|
|
25
|
+
create(params: {
|
|
26
|
+
collection: string;
|
|
27
|
+
data: any;
|
|
28
|
+
}): Promise<any>;
|
|
29
|
+
update(params: {
|
|
30
|
+
collection: string;
|
|
31
|
+
id: string;
|
|
32
|
+
data: any;
|
|
33
|
+
}): Promise<any>;
|
|
34
|
+
delete(params: {
|
|
35
|
+
collection: string;
|
|
36
|
+
id: string;
|
|
37
|
+
}): Promise<void>;
|
|
38
|
+
getGlobal(params: {
|
|
39
|
+
slug: string;
|
|
40
|
+
}): Promise<{
|
|
41
|
+
[key: string]: any;
|
|
42
|
+
}>;
|
|
43
|
+
updateGlobal(params: {
|
|
44
|
+
slug: string;
|
|
45
|
+
data: any;
|
|
46
|
+
}): Promise<any>;
|
|
47
|
+
private toObjectId;
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAGlE,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,qBAAa,YAAa,YAAW,eAAe;IAClD,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,EAAE,CAAM;gBAEJ,MAAM,EAAE,kBAAkB;YAKxB,IAAI;IAKlB,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,mBAAmB;IAIrB,IAAI,CAAC,MAAM,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,GAAG,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,eAAe,CAAC;IAsB1G,OAAO,CAAC,MAAM,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE;;;IASlD,MAAM,CAAC,MAAM,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,GAAG,CAAA;KAAE;IAMhD,MAAM,CAAC,MAAM,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,GAAG,CAAA;KAAE;IAU5D,MAAM,CAAC,MAAM,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE;IAKjD,SAAS,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE;;;IAQlC,YAAY,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,GAAG,CAAA;KAAE;IAUtD,OAAO,CAAC,UAAU;CAOnB"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { MongoClient, ObjectId } from 'mongodb';
|
|
2
|
+
export class MongoAdapter {
|
|
3
|
+
client;
|
|
4
|
+
db;
|
|
5
|
+
constructor(config) {
|
|
6
|
+
this.client = new MongoClient(config.url);
|
|
7
|
+
this.init(config.dbName);
|
|
8
|
+
}
|
|
9
|
+
async init(dbName) {
|
|
10
|
+
await this.client.connect();
|
|
11
|
+
this.db = this.client.db(dbName);
|
|
12
|
+
}
|
|
13
|
+
getCollectionName(slug) {
|
|
14
|
+
return `collection_${slug}`;
|
|
15
|
+
}
|
|
16
|
+
getGlobalCollection() {
|
|
17
|
+
return this.db.collection('dyrected_globals');
|
|
18
|
+
}
|
|
19
|
+
async find(params) {
|
|
20
|
+
const col = this.db.collection(this.getCollectionName(params.collection));
|
|
21
|
+
const limit = params.limit || 10;
|
|
22
|
+
const page = params.page || 1;
|
|
23
|
+
const skip = (page - 1) * limit;
|
|
24
|
+
const query = params.where || {};
|
|
25
|
+
const total = await col.countDocuments(query);
|
|
26
|
+
const cursor = col.find(query).skip(skip).limit(limit);
|
|
27
|
+
const docs = await cursor.toArray();
|
|
28
|
+
return {
|
|
29
|
+
docs: docs.map(doc => {
|
|
30
|
+
const { _id, ...rest } = doc;
|
|
31
|
+
return { id: _id.toString(), ...rest };
|
|
32
|
+
}),
|
|
33
|
+
total,
|
|
34
|
+
limit,
|
|
35
|
+
page
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
async findOne(params) {
|
|
39
|
+
const col = this.db.collection(this.getCollectionName(params.collection));
|
|
40
|
+
const query = { _id: this.toObjectId(params.id) };
|
|
41
|
+
const doc = await col.findOne(query);
|
|
42
|
+
if (!doc)
|
|
43
|
+
return null;
|
|
44
|
+
const { _id, ...rest } = doc;
|
|
45
|
+
return { id: _id.toString(), ...rest };
|
|
46
|
+
}
|
|
47
|
+
async create(params) {
|
|
48
|
+
const col = this.db.collection(this.getCollectionName(params.collection));
|
|
49
|
+
const res = await col.insertOne(params.data);
|
|
50
|
+
return { id: res.insertedId.toString(), ...params.data };
|
|
51
|
+
}
|
|
52
|
+
async update(params) {
|
|
53
|
+
const col = this.db.collection(this.getCollectionName(params.collection));
|
|
54
|
+
const { id, ...updateData } = params.data;
|
|
55
|
+
await col.updateOne({ _id: this.toObjectId(params.id) }, { $set: updateData });
|
|
56
|
+
return { id: params.id, ...updateData };
|
|
57
|
+
}
|
|
58
|
+
async delete(params) {
|
|
59
|
+
const col = this.db.collection(this.getCollectionName(params.collection));
|
|
60
|
+
await col.deleteOne({ _id: this.toObjectId(params.id) });
|
|
61
|
+
}
|
|
62
|
+
async getGlobal(params) {
|
|
63
|
+
const col = this.getGlobalCollection();
|
|
64
|
+
const doc = await col.findOne({ slug: params.slug });
|
|
65
|
+
if (!doc)
|
|
66
|
+
return {};
|
|
67
|
+
const { _id, slug, ...data } = doc;
|
|
68
|
+
return data;
|
|
69
|
+
}
|
|
70
|
+
async updateGlobal(params) {
|
|
71
|
+
const col = this.getGlobalCollection();
|
|
72
|
+
await col.updateOne({ slug: params.slug }, { $set: params.data }, { upsert: true });
|
|
73
|
+
return params.data;
|
|
74
|
+
}
|
|
75
|
+
toObjectId(id) {
|
|
76
|
+
try {
|
|
77
|
+
return new ObjectId(id);
|
|
78
|
+
}
|
|
79
|
+
catch {
|
|
80
|
+
return id; // Fallback for custom string IDs
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@dyrected/db-mongodb",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"main": "./dist/index.js",
|
|
6
|
+
"types": "./dist/index.d.ts",
|
|
7
|
+
"files": [
|
|
8
|
+
"dist"
|
|
9
|
+
],
|
|
10
|
+
"dependencies": {
|
|
11
|
+
"mongodb": "^6.6.2",
|
|
12
|
+
"@dyrected/core": "0.0.1"
|
|
13
|
+
},
|
|
14
|
+
"devDependencies": {
|
|
15
|
+
"@types/node": "^20.12.12",
|
|
16
|
+
"typescript": "^5.4.5"
|
|
17
|
+
},
|
|
18
|
+
"scripts": {
|
|
19
|
+
"build": "tsc",
|
|
20
|
+
"dev": "tsc --watch"
|
|
21
|
+
}
|
|
22
|
+
}
|