emilsoftware-utilities 1.3.6 → 1.3.8
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/{autobind.js → dist/autobind.js} +3 -4
- package/{log-execution-time.js → dist/log-execution-time.js} +3 -3
- package/{logger.d.ts → dist/logger.d.ts} +12 -3
- package/dist/logger.js +273 -0
- package/{orm.js → dist/orm.js} +2 -2
- package/{routes-logger.js → dist/routes-logger.js} +1 -2
- package/package.json +10 -4
- package/.idea/.name +0 -1
- package/.idea/emilsoftware-utilities.iml +0 -12
- package/.idea/inspectionProfiles/Project_Default.xml +0 -10
- package/.idea/modules.xml +0 -8
- package/.idea/vcs.xml +0 -6
- package/logger.js +0 -195
- package/src/autobind.ts +0 -93
- package/src/index.ts +0 -6
- package/src/log-execution-time.ts +0 -23
- package/src/logger.ts +0 -144
- package/src/node-firebird.ts +0 -1
- package/src/orm.ts +0 -221
- package/src/routes-logger.ts +0 -16
- package/src/utilities.ts +0 -194
- package/tsconfig.json +0 -16
- /package/{autobind.d.ts → dist/autobind.d.ts} +0 -0
- /package/{index.d.ts → dist/index.d.ts} +0 -0
- /package/{index.js → dist/index.js} +0 -0
- /package/{log-execution-time.d.ts → dist/log-execution-time.d.ts} +0 -0
- /package/{node-firebird.d.ts → dist/node-firebird.d.ts} +0 -0
- /package/{node-firebird.js → dist/node-firebird.js} +0 -0
- /package/{orm.d.ts → dist/orm.d.ts} +0 -0
- /package/{routes-logger.d.ts → dist/routes-logger.d.ts} +0 -0
- /package/{utilities.d.ts → dist/utilities.d.ts} +0 -0
- /package/{utilities.js → dist/utilities.js} +0 -0
package/src/autobind.ts
DELETED
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
// DECORATOR
|
|
2
|
-
/**
|
|
3
|
-
* Return a descriptor removing the value and returning a getter
|
|
4
|
-
* The getter will return a .bind version of the function
|
|
5
|
-
* and memoize the result against a symbol on the instance
|
|
6
|
-
*/
|
|
7
|
-
export function boundMethod(target:any, key: any, descriptor: any) {
|
|
8
|
-
let fn = descriptor?.value;
|
|
9
|
-
|
|
10
|
-
if (typeof fn !== 'function') {
|
|
11
|
-
throw new TypeError(`@boundMethod decorator can only be applied to methods not: ${typeof fn}`);
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
// In IE11 calling Object.defineProperty has a side effect of evaluating the
|
|
15
|
-
// getter for the property which is being replaced. This causes infinite
|
|
16
|
-
// recursion and an "Out of stack space" error.
|
|
17
|
-
let definingProperty = false;
|
|
18
|
-
|
|
19
|
-
return {
|
|
20
|
-
configurable: true,
|
|
21
|
-
get() {
|
|
22
|
-
// eslint-disable-next-line no-prototype-builtins
|
|
23
|
-
if (definingProperty || this === target.prototype || this.hasOwnProperty(key as string | number | symbol) ||
|
|
24
|
-
typeof fn !== 'function') {
|
|
25
|
-
return fn;
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
const boundFn = fn.bind(this);
|
|
29
|
-
definingProperty = true;
|
|
30
|
-
if (key) {
|
|
31
|
-
Object.defineProperty(this, key, {
|
|
32
|
-
configurable: true,
|
|
33
|
-
get() {
|
|
34
|
-
return boundFn;
|
|
35
|
-
},
|
|
36
|
-
set(value) {
|
|
37
|
-
fn = value;
|
|
38
|
-
// @ts-ignore
|
|
39
|
-
delete this[key];
|
|
40
|
-
}
|
|
41
|
-
});
|
|
42
|
-
}
|
|
43
|
-
definingProperty = false;
|
|
44
|
-
return boundFn;
|
|
45
|
-
},
|
|
46
|
-
set(value: any) {
|
|
47
|
-
fn = value;
|
|
48
|
-
}
|
|
49
|
-
};
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
/**
|
|
53
|
-
* Use boundMethod to bind all methods on the target.prototype
|
|
54
|
-
*/
|
|
55
|
-
export function boundClass(target: any) {
|
|
56
|
-
// (Using reflect to get all keys including symbols)
|
|
57
|
-
let keys;
|
|
58
|
-
// Use Reflect if exists
|
|
59
|
-
if (typeof Reflect !== 'undefined' && typeof Reflect.ownKeys === 'function') {
|
|
60
|
-
keys = Reflect.ownKeys(target.prototype);
|
|
61
|
-
} else {
|
|
62
|
-
keys = Object.getOwnPropertyNames(target.prototype);
|
|
63
|
-
// Use symbols if support is provided
|
|
64
|
-
if (typeof Object.getOwnPropertySymbols === 'function') {
|
|
65
|
-
// @ts-ignore
|
|
66
|
-
keys = keys.concat(Object.getOwnPropertySymbols(target.prototype));
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
keys.forEach(key => {
|
|
71
|
-
// Ignore special case target method
|
|
72
|
-
if (key === 'constructor') {
|
|
73
|
-
return;
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
const descriptor = Object.getOwnPropertyDescriptor(target.prototype, key);
|
|
77
|
-
|
|
78
|
-
// Only methods need binding
|
|
79
|
-
if (typeof descriptor?.value === 'function') {
|
|
80
|
-
Object.defineProperty(target.prototype, key, boundMethod(target, key, descriptor));
|
|
81
|
-
}
|
|
82
|
-
});
|
|
83
|
-
return target;
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
export default function autobind(...args: any[]) {
|
|
87
|
-
if (args.length === 1) {
|
|
88
|
-
// @ts-ignore
|
|
89
|
-
return boundClass(...args);
|
|
90
|
-
}
|
|
91
|
-
// @ts-ignore
|
|
92
|
-
return boundMethod(...args);
|
|
93
|
-
}
|
package/src/index.ts
DELETED
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import autobind from "./autobind"
|
|
2
|
-
import logExecutionTime from "./log-execution-time"
|
|
3
|
-
import {Logger, LogLevels} from "./logger";
|
|
4
|
-
import {Orm} from "./orm";
|
|
5
|
-
import {Utilities} from "./utilities";
|
|
6
|
-
export {autobind, logExecutionTime, Logger, LogLevels, Orm, Utilities};
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
// DECORATOR
|
|
2
|
-
import {Logger} from "./logger";
|
|
3
|
-
|
|
4
|
-
export default function logExecutionTime(fileName: string = "") {
|
|
5
|
-
return (target: any, propertyKey: string, descriptor: PropertyDescriptor) => {
|
|
6
|
-
const logger: Logger = new Logger(fileName);
|
|
7
|
-
const originalMethod = descriptor.value;
|
|
8
|
-
descriptor.value = async function (...args: any[]) {
|
|
9
|
-
const start = process.hrtime();
|
|
10
|
-
logger.info(` ${propertyKey} method execution started . . .`);
|
|
11
|
-
try {
|
|
12
|
-
const result = await originalMethod.apply(this, args);
|
|
13
|
-
const end = process.hrtime(start);
|
|
14
|
-
const durationInMilliseconds = end[0] * 1000 + end[1] / 1e6;
|
|
15
|
-
logger.info(` ${propertyKey} method took ${durationInMilliseconds.toFixed(2)} ms to execute`)
|
|
16
|
-
return result;
|
|
17
|
-
} catch (error) {
|
|
18
|
-
throw error;
|
|
19
|
-
}
|
|
20
|
-
};
|
|
21
|
-
return descriptor;
|
|
22
|
-
}
|
|
23
|
-
}
|
package/src/logger.ts
DELETED
|
@@ -1,144 +0,0 @@
|
|
|
1
|
-
import winston from "winston";
|
|
2
|
-
import * as path from "path";
|
|
3
|
-
import * as fs from "fs";
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
export enum LogLevels {
|
|
7
|
-
INFO = "INFO", ERROR = "ERROR", DEBUG = "DEBUG", LOG = "LOG", DATABASE = "DATABASE"
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
export class Logger {
|
|
11
|
-
private readonly winstonLogger: winston.Logger;
|
|
12
|
-
private readonly tag: string = "[UNTAGGED]";
|
|
13
|
-
|
|
14
|
-
private logFormat: winston.Logform.Format = winston.format.printf((tmp: winston.Logform.TransformableInfo): string => {
|
|
15
|
-
const {time, file, level, message} = tmp;
|
|
16
|
-
return `${JSON.stringify({time, file: this.replaceAll(file, "\\", "/"), level, message})},`;
|
|
17
|
-
});
|
|
18
|
-
|
|
19
|
-
private replaceAll(string: string, match: string, replacer: string) {
|
|
20
|
-
// @ts-ignore
|
|
21
|
-
return ("" + string)?.replaceAll(match, replacer);
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
constructor(tag: string) {
|
|
25
|
-
const fileName: string = this.getFileName();
|
|
26
|
-
const logsDirectory = "logs";
|
|
27
|
-
const logFilePath = path.join(logsDirectory, fileName + ".json");
|
|
28
|
-
|
|
29
|
-
if (!fs.existsSync(logsDirectory)) {
|
|
30
|
-
fs.mkdirSync(logsDirectory);
|
|
31
|
-
}
|
|
32
|
-
this.tag = tag;
|
|
33
|
-
|
|
34
|
-
winston.addColors({
|
|
35
|
-
database: 'green',
|
|
36
|
-
});
|
|
37
|
-
|
|
38
|
-
this.winstonLogger = winston.createLogger({
|
|
39
|
-
format: winston.format.json(),
|
|
40
|
-
transports: [new winston.transports.File({filename: logFilePath, format: this.logFormat})],
|
|
41
|
-
levels: {
|
|
42
|
-
error: 1, warn: 2, info: 3, http: 4, verbose: 5, debug: 6, silly: 7, database: 8
|
|
43
|
-
}
|
|
44
|
-
});
|
|
45
|
-
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
private getFileName(): string {
|
|
50
|
-
const now = new Date();
|
|
51
|
-
let date = now.getDate();
|
|
52
|
-
let dateString = "" + date;
|
|
53
|
-
if (date < 10) dateString = "0" + dateString;
|
|
54
|
-
|
|
55
|
-
let month = (now.getMonth() + 1);
|
|
56
|
-
let monthString = "" + month;
|
|
57
|
-
if (month < 10) monthString = "0" + monthString;
|
|
58
|
-
|
|
59
|
-
let yearString = now.getFullYear() + "";
|
|
60
|
-
return dateString + "-" + monthString + "-" + yearString;
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
public execStart(prefix: string = ""): number {
|
|
64
|
-
this.print(LogLevels.INFO, `${prefix} - Execution started`);
|
|
65
|
-
return performance.now();
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
public execStop(prefix: string = "", startTime: number, error: boolean = false): void {
|
|
69
|
-
switch (error) {
|
|
70
|
-
case true: {
|
|
71
|
-
this.print(LogLevels.ERROR, `${prefix} - Execution ended due to an error. Execution time: ${performance.now() - startTime} ms`);
|
|
72
|
-
break;
|
|
73
|
-
}
|
|
74
|
-
case false: {
|
|
75
|
-
this.print(LogLevels.INFO, `${prefix} - Execution ended successfully. Execution time: ${performance.now() - startTime} ms`);
|
|
76
|
-
break;
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
public info(...data: Object[]): void {
|
|
82
|
-
this.print(LogLevels.INFO, ...data);
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
public dbLog(...data: Object[]): void {
|
|
86
|
-
this.print(LogLevels.DATABASE, ...data);
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
public debug(...data: Object[]): void {
|
|
90
|
-
this.print(LogLevels.DEBUG, ...data);
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
public log(...data: Object[]): void {
|
|
94
|
-
this.print(LogLevels.LOG, ...data);
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
public error(...data: Object[]): void {
|
|
98
|
-
this.print(LogLevels.ERROR, ...data);
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
private test() {
|
|
102
|
-
let startTime = this.execStart("test");
|
|
103
|
-
this.execStop("test", startTime);
|
|
104
|
-
this.debug("test");
|
|
105
|
-
this.log("test");
|
|
106
|
-
this.error("test")
|
|
107
|
-
this.dbLog("test");
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
private print(level: LogLevels = LogLevels.INFO, ...data: Object[]): void {
|
|
111
|
-
const now: Date = new Date();
|
|
112
|
-
let tag = this.tag.split("\\").pop();
|
|
113
|
-
|
|
114
|
-
this.winstonLogger.defaultMeta = {
|
|
115
|
-
file: tag, time: now, level
|
|
116
|
-
};
|
|
117
|
-
|
|
118
|
-
let logEntry: winston.LogEntry = {level: level.toLowerCase(), message: [...data].join(",")};
|
|
119
|
-
//JSON.stringify([...data]);
|
|
120
|
-
switch (level) {
|
|
121
|
-
case LogLevels.INFO:
|
|
122
|
-
this.winstonLogger.info(logEntry);
|
|
123
|
-
console.info(`[INFO][${now}][${tag}]`, logEntry.message);
|
|
124
|
-
break;
|
|
125
|
-
case LogLevels.ERROR:
|
|
126
|
-
this.winstonLogger.error(logEntry);
|
|
127
|
-
console.error(`[ERROR][${now}][${tag}]`, logEntry.message);
|
|
128
|
-
break;
|
|
129
|
-
case LogLevels.DEBUG:
|
|
130
|
-
this.winstonLogger.debug(logEntry);
|
|
131
|
-
console.debug(`[DEBUG][${now}][${tag}]`, logEntry.message);
|
|
132
|
-
break;
|
|
133
|
-
case LogLevels.LOG: {
|
|
134
|
-
this.winstonLogger.log(logEntry);
|
|
135
|
-
console.log(`[LOG][${now}][${tag}]`, logEntry.message);
|
|
136
|
-
}
|
|
137
|
-
case LogLevels.DATABASE: {
|
|
138
|
-
this.winstonLogger.info(logEntry);
|
|
139
|
-
console.log(`[DATABASE][${now}][${tag}]`, logEntry.message);
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
}
|
|
144
|
-
}
|
package/src/node-firebird.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from "es-node-firebird";
|
package/src/orm.ts
DELETED
|
@@ -1,221 +0,0 @@
|
|
|
1
|
-
// @ts-ignore
|
|
2
|
-
import * as Firebird from "es-node-firebird";
|
|
3
|
-
import { Logger } from "./logger";
|
|
4
|
-
import { Database, Options, Transaction } from "es-node-firebird";
|
|
5
|
-
import { Utilities } from "./utilities";
|
|
6
|
-
|
|
7
|
-
const logger: Logger = new Logger(__filename);
|
|
8
|
-
|
|
9
|
-
const quote = (value: string): string => {
|
|
10
|
-
return "\"" + value + "\"";
|
|
11
|
-
};
|
|
12
|
-
const testConnection = (options: Options): Promise<any> => {
|
|
13
|
-
return new Promise((resolve): void => {
|
|
14
|
-
Firebird.attach(options, (err: Error, db: Database): void => {
|
|
15
|
-
if (err) {
|
|
16
|
-
logger.error('La connessione con il DATABASE non è andata a buon fine.');
|
|
17
|
-
return resolve(false);
|
|
18
|
-
}
|
|
19
|
-
logger.info("DATABASE connesso.");
|
|
20
|
-
if (db) db.detach();
|
|
21
|
-
return resolve(true);
|
|
22
|
-
})
|
|
23
|
-
})
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
const query = (options: Options, query: string, parameters: any[] = []): Promise<any> => {
|
|
27
|
-
try {
|
|
28
|
-
return new Promise((resolve, reject): void => {
|
|
29
|
-
Firebird.attach(options, (err: any, db: Database) => {
|
|
30
|
-
if (err) {
|
|
31
|
-
logger.error(err);
|
|
32
|
-
return reject(err);
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
logger.info(Utilities.printQueryWithParams(query, parameters));
|
|
36
|
-
db.query(query, parameters, (error: any, result: any) => {
|
|
37
|
-
if (error) {
|
|
38
|
-
logger.error(error);
|
|
39
|
-
db.detach();
|
|
40
|
-
return reject(error);
|
|
41
|
-
}
|
|
42
|
-
db.detach();
|
|
43
|
-
return resolve(result);
|
|
44
|
-
});
|
|
45
|
-
});
|
|
46
|
-
});
|
|
47
|
-
} catch (error) {
|
|
48
|
-
logger.error(error);
|
|
49
|
-
throw error;
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
const execute = (options: Options, query: string, parameters: any = []): Promise<any> => {
|
|
53
|
-
try {
|
|
54
|
-
return new Promise((resolve, reject): void => {
|
|
55
|
-
Firebird.attach(options, (err: any, db: Database) => {
|
|
56
|
-
if (err) {
|
|
57
|
-
logger.error(err);
|
|
58
|
-
return reject(err);
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
logger.info(Utilities.printQueryWithParams(query, parameters));
|
|
62
|
-
db.execute(query, parameters, (error, result: any): void => {
|
|
63
|
-
if (error) {
|
|
64
|
-
logger.error(error);
|
|
65
|
-
db.detach();
|
|
66
|
-
return reject(error);
|
|
67
|
-
}
|
|
68
|
-
db.detach();
|
|
69
|
-
return resolve(result);
|
|
70
|
-
});
|
|
71
|
-
});
|
|
72
|
-
});
|
|
73
|
-
} catch (error) {
|
|
74
|
-
logger.error(error);
|
|
75
|
-
throw error;
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
const trimParam = (param: any): string => {
|
|
80
|
-
if (typeof param === "string" || param instanceof String) {
|
|
81
|
-
return param.trim();
|
|
82
|
-
}
|
|
83
|
-
return param;
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
const connect = (options: Options): Promise<any> => {
|
|
87
|
-
return new Promise((resolve, reject): void => {
|
|
88
|
-
Firebird.attach(options, function (err: any, db: any): void {
|
|
89
|
-
if (err) return reject(err); else return resolve(db);
|
|
90
|
-
});
|
|
91
|
-
});
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
const startTransaction = (db: Database): Promise<any> => {
|
|
95
|
-
return new Promise((resolve, reject): void => {
|
|
96
|
-
db.transaction(Firebird.ISOLATION_READ_COMMITTED, function (err: any, transaction: any) {
|
|
97
|
-
if (err) return reject(err); else return resolve(transaction);
|
|
98
|
-
});
|
|
99
|
-
});
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
const commitTransaction = (transaction: Transaction): Promise<any> => {
|
|
103
|
-
return new Promise((resolve, reject): void => {
|
|
104
|
-
transaction.commit((err: any): void => {
|
|
105
|
-
if (err) return reject(err); else return resolve('Transaction committed successfully.');
|
|
106
|
-
});
|
|
107
|
-
});
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
const rollbackTransaction = (transaction: Transaction): Promise<any> => {
|
|
111
|
-
return new Promise((resolve, reject) => {
|
|
112
|
-
transaction.rollback(err => {
|
|
113
|
-
if (err) return reject(err);
|
|
114
|
-
else return resolve('Transaction rolled back successfully.');
|
|
115
|
-
});
|
|
116
|
-
});
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
interface QueryWithParams {
|
|
120
|
-
query: string,
|
|
121
|
-
params: any[]
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
const executeMultiple = async (options: Options, queriesWithParams: QueryWithParams[]): Promise<any> => {
|
|
125
|
-
let db: Database;
|
|
126
|
-
let transaction: Transaction;
|
|
127
|
-
|
|
128
|
-
try {
|
|
129
|
-
// Connetti al database
|
|
130
|
-
db = await connect(options);
|
|
131
|
-
|
|
132
|
-
// Inizia la transazione
|
|
133
|
-
transaction = await startTransaction(db);
|
|
134
|
-
|
|
135
|
-
// Esegui le query in serie
|
|
136
|
-
for (const qwp of queriesWithParams) {
|
|
137
|
-
await new Promise((resolve, reject) => {
|
|
138
|
-
transaction.query(qwp.query, qwp.params, (err: any, result: any): void => {
|
|
139
|
-
if (err) return reject(err);
|
|
140
|
-
else return resolve(result);
|
|
141
|
-
});
|
|
142
|
-
});
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
// Commit della transazione
|
|
146
|
-
await commitTransaction(transaction);
|
|
147
|
-
|
|
148
|
-
// Stacca il database
|
|
149
|
-
db.detach();
|
|
150
|
-
|
|
151
|
-
// Ritorna il messaggio di successo
|
|
152
|
-
return 'OK';
|
|
153
|
-
|
|
154
|
-
} catch (error) {
|
|
155
|
-
// In caso di errore, fai rollback della transazione
|
|
156
|
-
if (transaction) {
|
|
157
|
-
await rollbackTransaction(transaction);
|
|
158
|
-
}
|
|
159
|
-
if (db) {
|
|
160
|
-
db.detach();
|
|
161
|
-
}
|
|
162
|
-
throw error;
|
|
163
|
-
}
|
|
164
|
-
};
|
|
165
|
-
|
|
166
|
-
const executeQueries = async (transaction: Transaction, queries: string[], params: any[]): Promise<any> => {
|
|
167
|
-
try {
|
|
168
|
-
try {
|
|
169
|
-
return await queries.reduce((promiseChain: Promise<any>, currentQuery: string, index: number) => {
|
|
170
|
-
return promiseChain.then(() => new Promise((resolve, reject) => {
|
|
171
|
-
transaction.query(currentQuery, params[index], (err: any, result: any): void => {
|
|
172
|
-
if (err) return reject(err);
|
|
173
|
-
else return resolve(result);
|
|
174
|
-
});
|
|
175
|
-
}));
|
|
176
|
-
}, Promise.resolve());
|
|
177
|
-
} catch (error) {
|
|
178
|
-
return await new Promise((resolve_1, reject_1) => {
|
|
179
|
-
transaction.rollback((rollbackErr: any) => {
|
|
180
|
-
if (rollbackErr) {
|
|
181
|
-
return reject_1(rollbackErr);
|
|
182
|
-
} else {
|
|
183
|
-
return reject_1(error);
|
|
184
|
-
}
|
|
185
|
-
});
|
|
186
|
-
});
|
|
187
|
-
}
|
|
188
|
-
} catch (error) {
|
|
189
|
-
throw error;
|
|
190
|
-
}
|
|
191
|
-
};
|
|
192
|
-
|
|
193
|
-
interface Orm {
|
|
194
|
-
quote: (value: string) => string,
|
|
195
|
-
testConnection: (options: Options) => Promise<any>,
|
|
196
|
-
query: (options: Options, query: any, parameters?: any[]) => Promise<any>,
|
|
197
|
-
execute: (options: Options, query: any, parameters?: any[]) => Promise<any>,
|
|
198
|
-
trimParam: (param: any) => string,
|
|
199
|
-
connect: (options: Options) => Promise<any>,
|
|
200
|
-
startTransaction: (db: Database) => Promise<any>,
|
|
201
|
-
executeMultiple: (options: Options, qwps: QueryWithParams[]) => any,
|
|
202
|
-
executeQueries: (transaction: Transaction, queries: string[], params: any[]) => any,
|
|
203
|
-
commitTransaction: (transaction: Transaction) => Promise<any>,
|
|
204
|
-
rollbackTransaction: (transaction: Transaction) => Promise<any>,
|
|
205
|
-
}
|
|
206
|
-
|
|
207
|
-
export const Orm: Orm = {
|
|
208
|
-
quote,
|
|
209
|
-
testConnection,
|
|
210
|
-
query,
|
|
211
|
-
execute,
|
|
212
|
-
trimParam,
|
|
213
|
-
connect,
|
|
214
|
-
startTransaction,
|
|
215
|
-
executeQueries,
|
|
216
|
-
executeMultiple,
|
|
217
|
-
commitTransaction,
|
|
218
|
-
rollbackTransaction
|
|
219
|
-
}
|
|
220
|
-
|
|
221
|
-
|
package/src/routes-logger.ts
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import {NextFunction, Request, Response} from "express";
|
|
2
|
-
import {Logger} from "./logger";
|
|
3
|
-
|
|
4
|
-
// Middleware per misurare il tempo di esecuzione
|
|
5
|
-
export function routesLogger(req: Request, res: Response, next: NextFunction, logger: Logger) {
|
|
6
|
-
const start: Date = new Date();
|
|
7
|
-
// Funzione da eseguire dopo il completamento del controller
|
|
8
|
-
res.on('finish', (): void => {
|
|
9
|
-
const end: Date = new Date();
|
|
10
|
-
const elapsed: number = end.getTime() - start.getTime();
|
|
11
|
-
|
|
12
|
-
logger.info(`Tempo di esecuzione per ${req.method} ${req.originalUrl}: ${elapsed} ms`);
|
|
13
|
-
});
|
|
14
|
-
// Continua l'esecuzione della catena middleware
|
|
15
|
-
return next();
|
|
16
|
-
}
|