@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.
@@ -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 = {}));
@@ -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
@@ -1,2 +0,0 @@
1
- import * as Repositories from './repositories';
2
- export { Repositories };