@reldens/storage 0.30.0 → 0.31.0
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.
|
@@ -7,6 +7,8 @@
|
|
|
7
7
|
const { MikroOrmDriver } = require('./mikro-orm-driver');
|
|
8
8
|
const { BaseDataServer } = require('../base-data-server');
|
|
9
9
|
const { MikroORM } = require('@mikro-orm/core');
|
|
10
|
+
const { MySqlDriver } = require('@mikro-orm/mysql');
|
|
11
|
+
const { MongoDriver } = require('@mikro-orm/mongodb');
|
|
10
12
|
const { Logger, ErrorManager } = require('@reldens/utils');
|
|
11
13
|
|
|
12
14
|
class MikroOrmDataServer extends BaseDataServer
|
|
@@ -14,26 +16,43 @@ class MikroOrmDataServer extends BaseDataServer
|
|
|
14
16
|
|
|
15
17
|
orm = {};
|
|
16
18
|
clientsMapped = {
|
|
17
|
-
mysql:
|
|
18
|
-
mongodb:
|
|
19
|
+
mysql: MySqlDriver,
|
|
20
|
+
mongodb: MongoDriver
|
|
19
21
|
};
|
|
20
22
|
|
|
23
|
+
constructor(props)
|
|
24
|
+
{
|
|
25
|
+
// @TODO - BETA - Finish implementation.
|
|
26
|
+
super(props);
|
|
27
|
+
this.entitiesPath = props.entitiesPath;
|
|
28
|
+
}
|
|
29
|
+
|
|
21
30
|
async connect()
|
|
22
31
|
{
|
|
23
32
|
if(this.initialized){
|
|
24
33
|
return this.initialized;
|
|
25
34
|
}
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
35
|
+
let providedSetup = {
|
|
36
|
+
driver: this.clientsMapped[(this.client || 'mongodb')],
|
|
37
|
+
dbName: this.config.database,
|
|
29
38
|
clientUrl: this.connectString,
|
|
30
39
|
allowGlobalContext: true
|
|
31
|
-
}
|
|
40
|
+
};
|
|
41
|
+
if(this.rawEntities){
|
|
42
|
+
providedSetup.entities = Object.values(this.rawEntities);
|
|
43
|
+
}
|
|
44
|
+
if(0 < Object.keys(this.entities).length){
|
|
45
|
+
providedSetup.entities = this.entities;
|
|
46
|
+
}
|
|
47
|
+
if(this.entitiesPath){
|
|
48
|
+
providedSetup.entities = this.entitiesPath;
|
|
49
|
+
}
|
|
50
|
+
this.orm = await MikroORM.init(providedSetup);
|
|
32
51
|
this.initialized = Date.now();
|
|
33
52
|
return this.initialized;
|
|
34
53
|
}
|
|
35
54
|
|
|
36
|
-
generateEntities(
|
|
55
|
+
generateEntities()
|
|
37
56
|
{
|
|
38
57
|
if(!this.initialized){
|
|
39
58
|
Logger.critical('In order to generate entities with Mikro ORM driver you need to connect to the server.');
|
|
@@ -44,8 +63,8 @@ class MikroOrmDataServer extends BaseDataServer
|
|
|
44
63
|
return {};
|
|
45
64
|
}
|
|
46
65
|
this.entities = {};
|
|
47
|
-
for(let i of Object.keys(rawEntities)){
|
|
48
|
-
let rawEntity = rawEntities[i];
|
|
66
|
+
for(let i of Object.keys(this.rawEntities)){
|
|
67
|
+
let rawEntity = this.rawEntities[i];
|
|
49
68
|
this.entities[i] = new MikroOrmDriver({
|
|
50
69
|
rawModel: rawEntity,
|
|
51
70
|
id: i,
|
|
@@ -12,6 +12,7 @@ class MikroOrmDriver extends BaseDriver
|
|
|
12
12
|
|
|
13
13
|
constructor(props)
|
|
14
14
|
{
|
|
15
|
+
// @TODO - BETA - Finish implementation.
|
|
15
16
|
super(props);
|
|
16
17
|
if(!props.orm){
|
|
17
18
|
ErrorManager.error('Missing ORM on Mikro ORM driver.');
|
|
@@ -24,7 +25,7 @@ class MikroOrmDriver extends BaseDriver
|
|
|
24
25
|
}
|
|
25
26
|
this.orm = props.orm;
|
|
26
27
|
this.server = props.server;
|
|
27
|
-
this.repository = this.orm.em.getRepository(this.rawModel
|
|
28
|
+
this.repository = this.orm.em.getRepository(this.rawModel);
|
|
28
29
|
}
|
|
29
30
|
|
|
30
31
|
databaseName()
|
|
@@ -54,9 +55,8 @@ class MikroOrmDriver extends BaseDriver
|
|
|
54
55
|
|
|
55
56
|
async create(params)
|
|
56
57
|
{
|
|
57
|
-
let newInstance = this.
|
|
58
|
-
await this.
|
|
59
|
-
await this.orm.em.flush();
|
|
58
|
+
let newInstance = await this.orm.em.create(this.rawModel, params);
|
|
59
|
+
await this.orm.em.upsert(newInstance);
|
|
60
60
|
return newInstance;
|
|
61
61
|
}
|
|
62
62
|
|
|
@@ -75,7 +75,7 @@ class MikroOrmDriver extends BaseDriver
|
|
|
75
75
|
}
|
|
76
76
|
for(let entity of entities){
|
|
77
77
|
Object.assign(entity, updatePatch);
|
|
78
|
-
await this.
|
|
78
|
+
await this.orm.em.upsert(entity);
|
|
79
79
|
await this.orm.em.flush();
|
|
80
80
|
}
|
|
81
81
|
return entities;
|
|
@@ -90,7 +90,7 @@ class MikroOrmDriver extends BaseDriver
|
|
|
90
90
|
}
|
|
91
91
|
for(let entity of entities){
|
|
92
92
|
Object.assign(entity, updatePatch);
|
|
93
|
-
await this.
|
|
93
|
+
await this.orm.em.upsert(entity);
|
|
94
94
|
await this.orm.em.flush();
|
|
95
95
|
}
|
|
96
96
|
return entities;
|
|
@@ -101,6 +101,22 @@ class MikroOrmDriver extends BaseDriver
|
|
|
101
101
|
return this.update({id}, params);
|
|
102
102
|
}
|
|
103
103
|
|
|
104
|
+
async upsert(params, filters)
|
|
105
|
+
{
|
|
106
|
+
if(params.id){
|
|
107
|
+
let patch = Object.assign({}, params);
|
|
108
|
+
delete patch.id;
|
|
109
|
+
return this.updateById(params.id, patch);
|
|
110
|
+
}
|
|
111
|
+
if(filters){
|
|
112
|
+
let existent = await this.loadOne(filters);
|
|
113
|
+
if(existent){
|
|
114
|
+
return this.updateById(existent.id, params);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
return this.create(params);
|
|
118
|
+
}
|
|
119
|
+
|
|
104
120
|
async delete(filters = {})
|
|
105
121
|
{
|
|
106
122
|
let entries = await this.load(filters);
|
|
@@ -207,6 +223,9 @@ class MikroOrmDriver extends BaseDriver
|
|
|
207
223
|
queryBuilder(useLimit = false, useOffset = false, useSort = false)
|
|
208
224
|
{
|
|
209
225
|
let queryBuilder = {};
|
|
226
|
+
if(0 < this.select.length){
|
|
227
|
+
queryBuilder.select(...this.select);
|
|
228
|
+
}
|
|
210
229
|
if(useLimit && 0 !== this.limit){
|
|
211
230
|
queryBuilder.limit = this.limit;
|
|
212
231
|
}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@reldens/storage",
|
|
3
3
|
"scope": "@reldens",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.31.0",
|
|
5
5
|
"description": "Reldens - Storage",
|
|
6
6
|
"author": "Damian A. Pastorini",
|
|
7
7
|
"license": "MIT",
|
|
@@ -44,11 +44,13 @@
|
|
|
44
44
|
"url": "https://github.com/damian-pastorini/reldens-storage/issues"
|
|
45
45
|
},
|
|
46
46
|
"dependencies": {
|
|
47
|
-
"@mikro-orm/core": "^6.
|
|
48
|
-
"@mikro-orm/mongodb": "^6.
|
|
49
|
-
"@
|
|
47
|
+
"@mikro-orm/core": "^6.4.0",
|
|
48
|
+
"@mikro-orm/mongodb": "^6.4.0",
|
|
49
|
+
"@mikro-orm/mysql": "^6.4.0",
|
|
50
|
+
"@reldens/utils": "^0.39.0",
|
|
50
51
|
"knex": "^3.1.0",
|
|
51
52
|
"mysql": "^2.18.1",
|
|
53
|
+
"mysql2": "^3.11.5",
|
|
52
54
|
"objection": "^3.1.5"
|
|
53
55
|
}
|
|
54
56
|
}
|