@spytecgps/nova-orm 1.3.11-rc4 → 1.3.12
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/dist/{utils/index.d.ts → index.d.ts} +8 -1
- package/dist/index.js +1 -0
- package/package.json +1 -10
- package/dist/consoleLogger.d.ts +0 -1
- package/dist/consoleLogger.js +0 -47
- package/dist/entities.js +0 -11
- package/dist/ents.d.ts +0 -2
- package/dist/enums-vPEcKjNp.js +0 -134
- package/dist/enums.d.ts +0 -2
- package/dist/enums.js +0 -7
- package/dist/index-BHDlCHC_.js +0 -9143
- package/dist/logger-7bbP0aeT.js +0 -11
- package/dist/novaDataSource.js +0 -293
- package/dist/repos.d.ts +0 -2
- package/dist/repos.js +0 -17206
- package/dist/utils.js +0 -86
- package/dist/uuidHelpers-DVc4n8Yf.js +0 -226
package/dist/logger-7bbP0aeT.js
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
exports.LogLevel = void 0;
|
|
4
|
-
(function (LogLevel) {
|
|
5
|
-
LogLevel["FATAL"] = "fatal";
|
|
6
|
-
LogLevel["ERROR"] = "error";
|
|
7
|
-
LogLevel["WARN"] = "warn";
|
|
8
|
-
LogLevel["INFO"] = "info";
|
|
9
|
-
LogLevel["DEBUG"] = "debug";
|
|
10
|
-
LogLevel["TRACE"] = "trace";
|
|
11
|
-
})(exports.LogLevel || (exports.LogLevel = {}));
|
package/dist/novaDataSource.js
DELETED
|
@@ -1,293 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var typeorm = require('typeorm');
|
|
4
|
-
var index = require('./index-BHDlCHC_.js');
|
|
5
|
-
require('./enums-vPEcKjNp.js');
|
|
6
|
-
require('uuid');
|
|
7
|
-
require('./logger-7bbP0aeT.js');
|
|
8
|
-
|
|
9
|
-
const entitiesToLogErrorOnDelete = ['Device', 'Billing'];
|
|
10
|
-
let AllEntitiesSubscriber = class AllEntitiesSubscriber {
|
|
11
|
-
// TODO: We need to put back these logs but using the logger instead of the console log
|
|
12
|
-
/**
|
|
13
|
-
* Called after entity insertion.
|
|
14
|
-
*/
|
|
15
|
-
// afterInsert(event: InsertEvent<any>) {
|
|
16
|
-
// console.debug(`AFTER ENTITY INSERTED: `, event.entity)
|
|
17
|
-
// }
|
|
18
|
-
/**
|
|
19
|
-
* Called after entity update.
|
|
20
|
-
*/
|
|
21
|
-
// afterUpdate(event: UpdateEvent<any>) {
|
|
22
|
-
// console.debug(`AFTER ENTITY UPDATED: `, {
|
|
23
|
-
// entity: event.entity,
|
|
24
|
-
// databaseEntity: event.databaseEntity,
|
|
25
|
-
// })
|
|
26
|
-
// }
|
|
27
|
-
/**
|
|
28
|
-
* Called after entity removal.
|
|
29
|
-
*/
|
|
30
|
-
afterRemove(event) {
|
|
31
|
-
const entityType = event.metadata.name;
|
|
32
|
-
const logError = entitiesToLogErrorOnDelete.includes(entityType);
|
|
33
|
-
const message = `ENTITY OF TYPE ${entityType} REMOVED`;
|
|
34
|
-
if (logError) {
|
|
35
|
-
console.error(message, {
|
|
36
|
-
entityId: event.entityId,
|
|
37
|
-
entity: event.entity,
|
|
38
|
-
databaseEntity: event.databaseEntity,
|
|
39
|
-
});
|
|
40
|
-
}
|
|
41
|
-
// else {
|
|
42
|
-
// console.warn(message, {
|
|
43
|
-
// entityId: event.entityId,
|
|
44
|
-
// entity: event.entity,
|
|
45
|
-
// databaseEntity: event.databaseEntity,
|
|
46
|
-
// })
|
|
47
|
-
// }
|
|
48
|
-
}
|
|
49
|
-
};
|
|
50
|
-
AllEntitiesSubscriber = index.__decorate([
|
|
51
|
-
typeorm.EventSubscriber()
|
|
52
|
-
], AllEntitiesSubscriber);
|
|
53
|
-
|
|
54
|
-
var Subscribers = /*#__PURE__*/Object.freeze({
|
|
55
|
-
__proto__: null,
|
|
56
|
-
get AllEntitiesSubscriber () { return AllEntitiesSubscriber; }
|
|
57
|
-
});
|
|
58
|
-
|
|
59
|
-
const queriesToIgnore = ['commit', 'start transaction', 'select version()'];
|
|
60
|
-
class QueryLogger {
|
|
61
|
-
logger;
|
|
62
|
-
logging;
|
|
63
|
-
constructor(logger, logging) {
|
|
64
|
-
this.logger = logger;
|
|
65
|
-
this.logging = logging != null ? logging : false;
|
|
66
|
-
}
|
|
67
|
-
logQuery(query, parameters, _queryRunner) {
|
|
68
|
-
try {
|
|
69
|
-
if (!this.logging || (this.logging instanceof Array && !this.logging.includes('query'))) {
|
|
70
|
-
return;
|
|
71
|
-
}
|
|
72
|
-
const lowerCaseQuery = query.toLowerCase();
|
|
73
|
-
for (const queryToIgnore of queriesToIgnore) {
|
|
74
|
-
if (lowerCaseQuery.includes(queryToIgnore)) {
|
|
75
|
-
return;
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
this.logger?.trace({ query, parameters }, `SQL QUERY`);
|
|
79
|
-
}
|
|
80
|
-
catch { } // do nothing if logging fails
|
|
81
|
-
}
|
|
82
|
-
logQueryError(error, query, parameters, _queryRunner) {
|
|
83
|
-
// no need to log errors, they are already logged by the repository
|
|
84
|
-
this.logger?.error({ query, parameters, error }, `SQL QUERY WITH ERROR`);
|
|
85
|
-
}
|
|
86
|
-
logQuerySlow(time, query, parameters, _queryRunner) {
|
|
87
|
-
this.logger?.warn({ query, parameters, time: time }, `SQL QUERY SLOW`);
|
|
88
|
-
}
|
|
89
|
-
logSchemaBuild(message, _queryRunner) {
|
|
90
|
-
this.logger?.trace({ message }, `SQL SCHEMA BUILD`);
|
|
91
|
-
}
|
|
92
|
-
logMigration(message, _queryRunner) {
|
|
93
|
-
this.logger?.trace({ message }, `SQL MIGRATION: `);
|
|
94
|
-
}
|
|
95
|
-
log(level, message, _queryRunner) {
|
|
96
|
-
if (level === 'warn') {
|
|
97
|
-
this.logger?.warn({ message }, `SQL LOG:`);
|
|
98
|
-
}
|
|
99
|
-
else if (level === 'info') {
|
|
100
|
-
this.logger?.info({ message }, `SQL LOG:`);
|
|
101
|
-
}
|
|
102
|
-
else {
|
|
103
|
-
this.logger?.trace({ message }, `SQL LOG:`);
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
class NovaDataSource {
|
|
109
|
-
dataSource;
|
|
110
|
-
logger;
|
|
111
|
-
constructor(config, logger, replicaConfig) {
|
|
112
|
-
this.logger = logger;
|
|
113
|
-
const entities = [];
|
|
114
|
-
for (const key in index.Entities) {
|
|
115
|
-
const entity = index.Entities[key];
|
|
116
|
-
entities.push(entity);
|
|
117
|
-
}
|
|
118
|
-
const subscribers = [];
|
|
119
|
-
for (const key in Subscribers) {
|
|
120
|
-
const subscriber = Subscribers[key];
|
|
121
|
-
subscribers.push(subscriber);
|
|
122
|
-
}
|
|
123
|
-
const baseConfig = {
|
|
124
|
-
host: 'aws.connect.psdb.cloud',
|
|
125
|
-
port: 3306,
|
|
126
|
-
database: 'nova',
|
|
127
|
-
ssl: {
|
|
128
|
-
rejectUnauthorized: true,
|
|
129
|
-
},
|
|
130
|
-
};
|
|
131
|
-
this.dataSource = new typeorm.DataSource({
|
|
132
|
-
type: 'mysql',
|
|
133
|
-
connectorPackage: 'mysql2',
|
|
134
|
-
synchronize: false,
|
|
135
|
-
logging: true,
|
|
136
|
-
logger: new QueryLogger(this.logger, config.logging),
|
|
137
|
-
entities,
|
|
138
|
-
subscribers,
|
|
139
|
-
supportBigNumbers: true,
|
|
140
|
-
bigNumberStrings: false,
|
|
141
|
-
extra: {
|
|
142
|
-
decimalNumbers: true,
|
|
143
|
-
},
|
|
144
|
-
...baseConfig,
|
|
145
|
-
...config,
|
|
146
|
-
replication: {
|
|
147
|
-
master: {
|
|
148
|
-
...baseConfig,
|
|
149
|
-
...config,
|
|
150
|
-
},
|
|
151
|
-
slaves: replicaConfig
|
|
152
|
-
? [
|
|
153
|
-
{
|
|
154
|
-
...baseConfig,
|
|
155
|
-
...replicaConfig,
|
|
156
|
-
},
|
|
157
|
-
]
|
|
158
|
-
: [
|
|
159
|
-
{
|
|
160
|
-
...baseConfig,
|
|
161
|
-
...config,
|
|
162
|
-
},
|
|
163
|
-
],
|
|
164
|
-
defaultMode: config.replicationMode ?? 'master',
|
|
165
|
-
},
|
|
166
|
-
});
|
|
167
|
-
}
|
|
168
|
-
/**
|
|
169
|
-
* Performs connection to the database.
|
|
170
|
-
*/
|
|
171
|
-
async connect() {
|
|
172
|
-
if (!this.dataSource.isInitialized) {
|
|
173
|
-
await this.dataSource.initialize();
|
|
174
|
-
}
|
|
175
|
-
}
|
|
176
|
-
/**
|
|
177
|
-
* Closes connection with the database.
|
|
178
|
-
* Once connection is closed, you cannot use repositories or perform any operations except opening connection again.
|
|
179
|
-
*/
|
|
180
|
-
async disconnect() {
|
|
181
|
-
try {
|
|
182
|
-
if (this.dataSource.isInitialized) {
|
|
183
|
-
await this.dataSource.destroy();
|
|
184
|
-
}
|
|
185
|
-
}
|
|
186
|
-
catch (error) {
|
|
187
|
-
this.logger.error({ error }, 'Failed to close connection to database');
|
|
188
|
-
}
|
|
189
|
-
}
|
|
190
|
-
/**
|
|
191
|
-
* Gets repository for the given entity.
|
|
192
|
-
*/
|
|
193
|
-
getRepository(target) {
|
|
194
|
-
return this.dataSource.getRepository(target);
|
|
195
|
-
}
|
|
196
|
-
/**
|
|
197
|
-
* Executes raw SQL query and returns raw database results.
|
|
198
|
-
*/
|
|
199
|
-
async query(query, parameters) {
|
|
200
|
-
return this.dataSource.query(query, parameters, null);
|
|
201
|
-
}
|
|
202
|
-
/**
|
|
203
|
-
* Creates a new query builder that can be used to build a SQL query.
|
|
204
|
-
*/
|
|
205
|
-
async createQueryBuilder(entityClass, alias) {
|
|
206
|
-
return this.dataSource.createQueryBuilder(entityClass, alias, null);
|
|
207
|
-
}
|
|
208
|
-
/**
|
|
209
|
-
* Creates a query runner used for perform queries on a single database connection.
|
|
210
|
-
* Using query runners you can control your queries to execute using single database connection and
|
|
211
|
-
* manually control your database transaction.
|
|
212
|
-
*
|
|
213
|
-
* Mode is used in replication mode and indicates whatever you want to connect
|
|
214
|
-
* to master database or any of slave databases.
|
|
215
|
-
* If you perform writes you must use master database,
|
|
216
|
-
* if you perform reads you can use slave databases.
|
|
217
|
-
*/
|
|
218
|
-
createQueryRunner(mode) {
|
|
219
|
-
return this.dataSource.createQueryRunner(mode);
|
|
220
|
-
}
|
|
221
|
-
createQueryRunnerFromParams(params) {
|
|
222
|
-
const replicationMode = params?.queryOptions?.forceUseReplica ? 'slave' : 'master';
|
|
223
|
-
this.logger.trace({ replicationMode }, 'Creating query runner with replication mode');
|
|
224
|
-
return this.dataSource.createQueryRunner(replicationMode);
|
|
225
|
-
}
|
|
226
|
-
async safeQuery(queryBuilderHandler, tag, queryRunner) {
|
|
227
|
-
try {
|
|
228
|
-
await this.connect();
|
|
229
|
-
const result = await queryBuilderHandler(this, queryRunner);
|
|
230
|
-
return result;
|
|
231
|
-
}
|
|
232
|
-
catch (error) {
|
|
233
|
-
this.logger.error({ error }, tag ? tag + ' ' : '' + 'Error while executing query');
|
|
234
|
-
throw error;
|
|
235
|
-
}
|
|
236
|
-
finally {
|
|
237
|
-
if (queryRunner) {
|
|
238
|
-
await queryRunner.release();
|
|
239
|
-
}
|
|
240
|
-
await this.disconnect();
|
|
241
|
-
}
|
|
242
|
-
}
|
|
243
|
-
async safeQuery2(queryBuilderHandler, tag, queryRunner) {
|
|
244
|
-
try {
|
|
245
|
-
if (!this.dataSource.isInitialized) {
|
|
246
|
-
this.logger.info('nova-orm new connection');
|
|
247
|
-
await this.connect();
|
|
248
|
-
}
|
|
249
|
-
else {
|
|
250
|
-
this.logger.info('nova-orm reusing connection');
|
|
251
|
-
}
|
|
252
|
-
const result = await queryBuilderHandler(this, queryRunner);
|
|
253
|
-
return result;
|
|
254
|
-
}
|
|
255
|
-
catch (error) {
|
|
256
|
-
this.logger.error({ error }, tag ? tag + ' ' : '' + 'Error while executing query');
|
|
257
|
-
throw error;
|
|
258
|
-
}
|
|
259
|
-
finally {
|
|
260
|
-
if (queryRunner) {
|
|
261
|
-
await queryRunner.release();
|
|
262
|
-
}
|
|
263
|
-
}
|
|
264
|
-
}
|
|
265
|
-
async safeQuery3(target, alias,
|
|
266
|
-
// eslint-disable-next-line no-unused-vars
|
|
267
|
-
callback, { replicationMode = 'slave', tag } = {}) {
|
|
268
|
-
let queryRunner;
|
|
269
|
-
try {
|
|
270
|
-
await this.connect();
|
|
271
|
-
queryRunner = this.dataSource.createQueryRunner(replicationMode);
|
|
272
|
-
const queryBuilder = this.dataSource.createQueryBuilder(target, alias, queryRunner);
|
|
273
|
-
const result = await callback(queryBuilder);
|
|
274
|
-
return result;
|
|
275
|
-
}
|
|
276
|
-
catch (error) {
|
|
277
|
-
this.logger.error({ error }, tag ? tag + ' ' : '' + 'Error while executing query');
|
|
278
|
-
throw error;
|
|
279
|
-
}
|
|
280
|
-
finally {
|
|
281
|
-
if (queryRunner) {
|
|
282
|
-
await queryRunner.release();
|
|
283
|
-
}
|
|
284
|
-
}
|
|
285
|
-
}
|
|
286
|
-
async syncSchema(dropBeforeSync = true) {
|
|
287
|
-
this.logger.warn('Initiating schema sync');
|
|
288
|
-
await this.connect();
|
|
289
|
-
await this.dataSource.synchronize(dropBeforeSync);
|
|
290
|
-
}
|
|
291
|
-
}
|
|
292
|
-
|
|
293
|
-
exports.NovaDataSource = NovaDataSource;
|
package/dist/repos.d.ts
DELETED