emilsoftware-utilities 2.0.0-dev.49 → 2.0.0-dev.50
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/Orm.d.ts
CHANGED
|
@@ -1,4 +1,8 @@
|
|
|
1
1
|
import { Database, Options, QueryParams, Transaction } from "node-firebird";
|
|
2
|
+
/** Valore scalare di una colonna Firebird (riga flat). */
|
|
3
|
+
export type DbValue = string | number | boolean | Date | Buffer | null | undefined;
|
|
4
|
+
/** Riga generica restituita da `Orm.query`/`Orm.execute` quando non si specifica un tipo. */
|
|
5
|
+
export type Row = Record<string, DbValue>;
|
|
2
6
|
export declare class Orm {
|
|
3
7
|
private static logger;
|
|
4
8
|
private static pools;
|
|
@@ -21,8 +25,8 @@ export declare class Orm {
|
|
|
21
25
|
private static normalizeResultValue;
|
|
22
26
|
private static attachWithTimeout;
|
|
23
27
|
static testConnection(options: Options): Promise<boolean>;
|
|
24
|
-
static query<T =
|
|
25
|
-
static execute<T =
|
|
28
|
+
static query<T = Row>(options: Options, query: string, parameters?: QueryParams, logQuery?: boolean): Promise<T[]>;
|
|
29
|
+
static execute<T = Row>(options: Options, query: string, parameters?: QueryParams, logQuery?: boolean): Promise<T[]>;
|
|
26
30
|
static trimParam<T>(param: T): string | T;
|
|
27
31
|
static connect(options: Options): Promise<Database>;
|
|
28
32
|
/**
|
|
@@ -32,7 +36,7 @@ export declare class Orm {
|
|
|
32
36
|
*/
|
|
33
37
|
static withTransaction<T>(options: Options, operation: (transaction: Transaction) => Promise<T>): Promise<T>;
|
|
34
38
|
/** Esegue una query su una transazione esistente e ne restituisce il risultato. */
|
|
35
|
-
static transactionQuery<T =
|
|
39
|
+
static transactionQuery<T = Row[]>(transaction: Transaction, query: string, parameters?: QueryParams): Promise<T>;
|
|
36
40
|
static startTransaction(db: Database): Promise<Transaction>;
|
|
37
41
|
static commitTransaction(transaction: Transaction): Promise<string>;
|
|
38
42
|
static rollbackTransaction(transaction: Transaction): Promise<string>;
|
package/dist/Orm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Orm.js","sourceRoot":"","sources":["../src/Orm.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,wDAA0C;AAE1C,qCAAkC;AAClC,2CAA4C;AAC5C,uDAK2B;AAE3B,MAAa,GAAG;IAIL,MAAM,CAAC,KAAK,CAAC,KAAa;QAC7B,OAAO,IAAI,GAAG,KAAK,GAAG,IAAI,CAAC;IAC/B,CAAC;IAED,uGAAuG;IAC/F,MAAM,CAAC,WAAW,CAAC,OAAgB;QACvC,MAAM,GAAG,GAAI,OAA2B,CAAC,QAAQ,CAAC;QAClD,IAAI,GAAG,KAAK,CAAC,EAAE,CAAC;YACZ,OAAO,CAAC,CAAC;QACb,CAAC;QACD,MAAM,IAAI,GAAG,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjD,OAAO,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACpE,CAAC;IAEO,MAAM,CAAC,wBAAwB,CAAC,OAAgB;QACpD,OAAQ,OAA2B,CAAC,kBAAkB,KAAK,IAAI,CAAC;IACpE,CAAC;IAEO,MAAM,CAAC,iBAAiB,CAAC,KAAa,EAAE,UAAuB,EAAE,aAAsB;QAC3F,MAAM,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,aAAV,UAAU,cAAV,UAAU,GAAI,EAAE,CAAC,CAAC;QAC/F,IAAI,aAAa,EAAE,CAAC;YAChB,OAAO,yBAAa,CAAC,oBAAoB,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;QACpE,CAAC;QACD,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,YAAY,aAAa,CAAC,MAAM,GAAG,CAAC;IACnF,CAAC;IAEO,MAAM,CAAC,YAAY,CAAC,OAAgB,EAAE,IAAY;;QACtD,MAAM,UAAU,GAAG,IAAA,0CAAwB,EAAC,OAAO,CAAC,CAAC;QACrD,OAAO;YACH,IAAI;YACJ,MAAA,UAAU,CAAC,IAAI,mCAAI,EAAE;YACrB,MAAA,UAAU,CAAC,IAAI,mCAAI,EAAE;YACrB,MAAA,UAAU,CAAC,QAAQ,mCAAI,EAAE;YACzB,MAAA,UAAU,CAAC,IAAI,mCAAI,EAAE;YACrB,MAAA,UAAU,CAAC,UAAU,mCAAI,EAAE;YAC3B,MAAM,CAAC,MAAA,UAAU,CAAC,SAAS,mCAAI,EAAE,CAAC;SACrC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAChB,CAAC;IAED;;;OAGG;IACI,MAAM,CAAO,UAAU;;YAC1B,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;YAC9C,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YACnB,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;gBAChE,IAAI,CAAC;oBACD,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;gBAClC,CAAC;gBAAC,WAAM,CAAC;oBACL,OAAO,EAAE,CAAC;gBACd,CAAC;YACL,CAAC,CAAC,CAAC,CAAC,CAAC;QACT,CAAC;KAAA;IAEO,MAAM,CAAC,OAAO,CAAC,OAAgB,EAAE,IAAY;QACjD,MAAM,UAAU,GAAG,IAAA,0CAAwB,EAAC,OAAO,CAAC,CAAC;QACrD,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAChD,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC/B,IAAI,CAAC,IAAI,EAAE,CAAC;YACR,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,8BAA8B,IAAI,WAAW,IAAA,sDAAoC,EAAC,UAAU,CAAC,EAAE,CAAC,CAAC;YAClH,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;YACvC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAY,EAAE,EAAE;gBAC9B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,wBAAwB,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YAC/D,CAAC,CAAC,CAAC;YACH,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAC9B,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAEO,MAAM,CAAC,YAAY,CAAC,OAAgB;;QACxC,MAAM,SAAS,GAAG,MAAC,OAA2B,CAAC,cAAc,mCAAI,KAAK,CAAC;QACvE,OAAO,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IACvF,CAAC;IAEO,MAAM,CAAC,kBAAkB,CAAC,KAAa,EAAE,SAAiB,EAAE,OAAgB,EAAE,KAAc;;QAChG,MAAM,MAAM,GAAG,GAAG,MAAA,OAAO,CAAC,IAAI,mCAAI,GAAG,IAAI,MAAA,OAAO,CAAC,IAAI,mCAAI,GAAG,OAAO,MAAA,OAAO,CAAC,QAAQ,mCAAI,GAAG,EAAE,CAAC;QAC7F,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,UAAU,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1E,OAAO,IAAI,KAAK,CAAC,2BAA2B,KAAK,UAAU,SAAS,UAAU,MAAM,GAAG,MAAM,EAAE,CAAC,CAAC;IACrG,CAAC;IAEO,MAAM,CAAO,aAAa,CAAC,EAAwB;;YACvD,IAAI,CAAC,EAAE,EAAE,CAAC;gBACN,OAAO;YACX,CAAC;YAED,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;gBAChC,IAAI,CAAC;oBACD,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;gBAC/B,CAAC;gBAAC,WAAM,CAAC;oBACL,OAAO,EAAE,CAAC;gBACd,CAAC;YACL,CAAC,CAAC,CAAC;QACP,CAAC;KAAA;IAEO,MAAM,CAAC,uBAAuB,CAAC,OAAwB;QAC3D,OAAO,OAAO,CAAC,iBAAiB,KAAK,KAAK,CAAC;IAC/C,CAAC;IAEO,MAAM,CAAC,oBAAoB,CAAC,KAAc,EAAE,iBAA0B;QAC1E,IAAI,CAAC,iBAAiB,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YAC9D,OAAO,KAAK,CAAC;QACjB,CAAC;QAED,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,YAAY,MAAM,EAAE,CAAC;YACvD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;QACnC,CAAC;QAED,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACvB,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC,CAAC;QACnF,CAAC;QAED,IAAI,KAAK,YAAY,IAAI,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YAClD,OAAO,KAAK,CAAC;QACjB,CAAC;QAED,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC5B,MAAM,MAAM,GAAG,KAAgC,CAAC;YAChD,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,UAAmC,EAAE,GAAW,EAAE,EAAE;gBACnF,UAAU,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,iBAAiB,CAAC,CAAC;gBAC5E,OAAO,UAAU,CAAC;YACtB,CAAC,EAAE,EAAE,CAAC,CAAC;QACX,CAAC;QAED,OAAO,KAAK,CAAC;IACjB,CAAC;IAEO,MAAM,CAAC,iBAAiB,CAAC,OAAgB;QAC7C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAQ,EAAE;YACzC,MAAM,iBAAiB,GAAG,IAAA,0CAAwB,EAAC,OAAO,CAAC,CAAC;YAC5D,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,CAAC;YACvD,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YAC3C,IAAI,OAAO,GAAG,KAAK,CAAC;YACpB,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE;gBAC9B,IAAI,OAAO,EAAE,CAAC;oBACV,OAAO;gBACX,CAAC;gBAED,OAAO,GAAG,IAAI,CAAC;gBACf,MAAM,CACF,IAAA,sCAAoB,EAChB,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,SAAS,EAAE,iBAAiB,CAAC,EAC/D,iBAAiB,EACjB,EAAE,KAAK,EAAE,QAAQ,EAAE,CACtB,CACJ,CAAC;YACN,CAAC,EAAE,SAAS,CAAC,CAAC;YAEd,MAAM,MAAM,GAAG,CAAO,GAAY,EAAE,EAAY,EAAiB,EAAE;gBAC/D,IAAI,OAAO,EAAE,CAAC;oBACV,MAAM,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;oBAC7B,OAAO;gBACX,CAAC;gBAED,OAAO,GAAG,IAAI,CAAC;gBACf,YAAY,CAAC,SAAS,CAAC,CAAC;gBAExB,IAAI,GAAG,EAAE,CAAC;oBACN,OAAO,MAAM,CAAC,IAAA,sCAAoB,EAAC,GAAG,EAAE,iBAAiB,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;gBACrF,CAAC;gBAED,OAAO,OAAO,CAAC,EAAE,CAAC,CAAC;YACvB,CAAC,CAAA,CAAC;YAEF,IAAI,CAAC;gBACD,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;oBACf,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;oBAC5C,OAAO;gBACX,CAAC;gBAED,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,yBAAyB,IAAA,sDAAoC,EAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;gBAErG,QAAQ,CAAC,MAAM,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC;YAC/C,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACb,+EAA+E;gBAC/E,IAAI,CAAC,OAAO,EAAE,CAAC;oBACX,OAAO,GAAG,IAAI,CAAC;oBACf,YAAY,CAAC,SAAS,CAAC,CAAC;oBACxB,MAAM,CAAC,IAAA,sCAAoB,EAAC,KAAK,EAAE,iBAAiB,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;gBAChF,CAAC;YACL,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAEM,MAAM,CAAO,cAAc,CAAC,OAAgB;;YAC/C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAQ,EAAE;gBACjC,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC;qBAC1B,IAAI,CAAC,CAAO,EAAY,EAAiB,EAAE;oBACxC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;oBACvC,MAAM,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;oBAC7B,OAAO,CAAC,IAAI,CAAC,CAAC;gBAClB,CAAC,CAAA,CAAC;qBACD,KAAK,CAAC,CAAC,GAAU,EAAQ,EAAE;oBACxB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,0DAA0D,CAAC,CAAC;oBAC9E,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;oBACvB,OAAO,CAAC,KAAK,CAAC,CAAC;gBACnB,CAAC,CAAC,CAAC;YACX,CAAC,CAAC,CAAC;QACP,CAAC;KAAA;IAEM,MAAM,CAAO,KAAK;6DACrB,OAAgB,EAChB,KAAa,EACb,aAA0B,EAAE,EAC5B,QAAQ,GAAG,IAAI;YAEf,IAAI,CAAC;gBACD,MAAM,iBAAiB,GAAG,IAAA,0CAAwB,EAAC,OAAO,CAAC,CAAC;gBAC5D,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;gBAEjD,OAAO,MAAM,IAAI,OAAO,CAAM,CAAC,OAAO,EAAE,MAAM,EAAQ,EAAE;oBACpD,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,CAAC;oBACvD,IAAI,OAAO,GAAG,KAAK,CAAC;oBACpB,MAAM,SAAS,GAAG,UAAU,CAAC,GAAS,EAAE;wBACpC,IAAI,OAAO,EAAE,CAAC;4BACV,OAAO;wBACX,CAAC;wBAED,OAAO,GAAG,IAAI,CAAC;wBACf,MAAM,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;wBAC7B,MAAM,CACF,IAAA,sCAAoB,EAChB,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,KAAK,CAAC,EACrE,iBAAiB,EACjB,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,CACjC,CACJ,CAAC;oBACN,CAAC,CAAA,EAAE,SAAS,CAAC,CAAC;oBAEd,IAAI,QAAQ,EAAE,CAAC;wBACX,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,CAAC,wBAAwB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;oBACxG,CAAC;oBAED,EAAE,CAAC,KAAK,CAAU,KAAK,EAAE,UAAU,EAAE,CAAO,KAAc,EAAE,MAAiB,EAAE,EAAE;wBAC7E,IAAI,OAAO,EAAE,CAAC;4BACV,MAAM,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;4BAC7B,OAAO;wBACX,CAAC;wBAED,OAAO,GAAG,IAAI,CAAC;wBACf,YAAY,CAAC,SAAS,CAAC,CAAC;wBACxB,MAAM,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;wBAE7B,IAAI,KAAK,EAAE,CAAC;4BACR,OAAO,MAAM,CAAC,IAAA,sCAAoB,EAAC,KAAK,EAAE,iBAAiB,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;wBAClG,CAAC;wBAED,OAAO,OAAO,CAAC,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,IAAI,CAAC,uBAAuB,CAAC,iBAAiB,CAAC,CAAQ,CAAC,CAAC;oBAC9G,CAAC,CAAA,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;YACP,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACb,MAAM,eAAe,GAAG,IAAA,sCAAoB,EAAC,KAAK,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;gBAC7F,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;gBACnC,MAAM,eAAe,CAAC;YAC1B,CAAC;QACL,CAAC;KAAA;IAEM,MAAM,CAAO,OAAO;6DACvB,OAAgB,EAChB,KAAa,EACb,aAA0B,EAAE,EAC5B,QAAQ,GAAG,IAAI;YAEf,IAAI,CAAC;gBACD,MAAM,iBAAiB,GAAG,IAAA,0CAAwB,EAAC,OAAO,CAAC,CAAC;gBAC5D,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;gBAEjD,OAAO,MAAM,IAAI,OAAO,CAAM,CAAC,OAAO,EAAE,MAAM,EAAQ,EAAE;oBACpD,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,CAAC;oBACvD,IAAI,OAAO,GAAG,KAAK,CAAC;oBACpB,MAAM,SAAS,GAAG,UAAU,CAAC,GAAS,EAAE;wBACpC,IAAI,OAAO,EAAE,CAAC;4BACV,OAAO;wBACX,CAAC;wBAED,OAAO,GAAG,IAAI,CAAC;wBACf,MAAM,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;wBAC7B,MAAM,CACF,IAAA,sCAAoB,EAChB,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,SAAS,EAAE,iBAAiB,EAAE,KAAK,CAAC,EACvE,iBAAiB,EACjB,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,KAAK,EAAE,CACnC,CACJ,CAAC;oBACN,CAAC,CAAA,EAAE,SAAS,CAAC,CAAC;oBAEd,IAAI,QAAQ,EAAE,CAAC;wBACX,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,CAAC,wBAAwB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;oBACxG,CAAC;oBAED,EAAE,CAAC,OAAO,CAAU,KAAK,EAAE,UAAU,EAAE,CAAO,KAAc,EAAE,MAAiB,EAAE,EAAE;wBAC/E,IAAI,OAAO,EAAE,CAAC;4BACV,MAAM,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;4BAC7B,OAAO;wBACX,CAAC;wBAED,OAAO,GAAG,IAAI,CAAC;wBACf,YAAY,CAAC,SAAS,CAAC,CAAC;wBACxB,MAAM,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;wBAE7B,IAAI,KAAK,EAAE,CAAC;4BACR,OAAO,MAAM,CAAC,IAAA,sCAAoB,EAAC,KAAK,EAAE,iBAAiB,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;wBACpG,CAAC;wBAED,OAAO,OAAO,CAAC,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,IAAI,CAAC,uBAAuB,CAAC,iBAAiB,CAAC,CAAQ,CAAC,CAAC;oBAC9G,CAAC,CAAA,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;YACP,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACb,MAAM,eAAe,GAAG,IAAA,sCAAoB,EAAC,KAAK,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;gBAC/F,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;gBACnC,MAAM,eAAe,CAAC;YAC1B,CAAC;QACL,CAAC;KAAA;IAEM,MAAM,CAAC,SAAS,CAAI,KAAQ;QAC/B,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,YAAY,MAAM,EAAE,CAAC;YACvD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;QAChC,CAAC;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;IAEM,MAAM,CAAO,OAAO,CAAC,OAAgB;;YACxC,OAAO,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;QAC3C,CAAC;KAAA;IAED;;;;OAIG;IACI,MAAM,CAAO,eAAe,CAC/B,OAAgB,EAChB,SAAmD;;YAEnD,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YACvC,IAAI,WAAoC,CAAC;YAEzC,IAAI,CAAC;gBACD,WAAW,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;gBAC9C,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,WAAW,CAAC,CAAC;gBAC5C,MAAM,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;gBAC1C,OAAO,MAAM,CAAC;YAClB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACb,IAAI,WAAW,EAAE,CAAC;oBACd,IAAI,CAAC;wBACD,MAAM,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC;oBAChD,CAAC;oBAAC,WAAM,CAAC;wBACL,yFAAyF;oBAC7F,CAAC;gBACL,CAAC;gBACD,MAAM,KAAK,CAAC;YAChB,CAAC;oBAAS,CAAC;gBACP,MAAM,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;YACjC,CAAC;QACL,CAAC;KAAA;IAED,mFAAmF;IAC5E,MAAM,CAAC,gBAAgB,CAC1B,WAAwB,EACxB,KAAa,EACb,aAA0B,EAAE;QAE5B,OAAO,IAAI,OAAO,CAAI,CAAC,OAAO,EAAE,MAAM,EAAQ,EAAE;YAC5C,WAAW,CAAC,KAAK,CAAC,KAAK,EAAE,UAAU,EAAE,CAAC,KAAc,EAAE,MAAiB,EAAQ,EAAE;gBAC7E,IAAI,KAAK,EAAE,CAAC;oBACR,MAAM,CAAC,KAAK,CAAC,CAAC;oBACd,OAAO;gBACX,CAAC;gBAED,OAAO,CAAC,MAAW,CAAC,CAAC;YACzB,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC;IAEM,MAAM,CAAO,gBAAgB,CAAC,EAAY;;YAC7C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAQ,EAAE;gBACzC,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC,wBAAwB,EAAE,UAAU,GAAY,EAAE,WAAwB;oBAC9F,IAAI,GAAG,EAAE,CAAC;wBACN,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;oBACvB,CAAC;oBAED,OAAO,OAAO,CAAC,WAAW,CAAC,CAAC;gBAChC,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;QACP,CAAC;KAAA;IAEM,MAAM,CAAO,iBAAiB,CAAC,WAAwB;;YAC1D,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAQ,EAAE;gBACzC,WAAW,CAAC,MAAM,CAAC,CAAC,GAAY,EAAQ,EAAE;oBACtC,IAAI,GAAG,EAAE,CAAC;wBACN,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;oBACvB,CAAC;oBAED,OAAO,OAAO,CAAC,qCAAqC,CAAC,CAAC;gBAC1D,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;QACP,CAAC;KAAA;IAEM,MAAM,CAAO,mBAAmB,CAAC,WAAwB;;YAC5D,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAQ,EAAE;gBACzC,WAAW,CAAC,QAAQ,CAAC,CAAC,GAAY,EAAQ,EAAE;oBACxC,IAAI,GAAG,EAAE,CAAC;wBACN,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;oBACvB,CAAC;oBAED,OAAO,OAAO,CAAC,uCAAuC,CAAC,CAAC;gBAC5D,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;QACP,CAAC;KAAA;IAEM,MAAM,CAAO,eAAe,CAAC,OAAgB,EAAE,iBAA2D;;YAC7G,MAAM,GAAG,CAAC,eAAe,CAAC,OAAO,EAAE,CAAO,WAAW,EAAE,EAAE;gBACrD,KAAK,MAAM,GAAG,IAAI,iBAAiB,EAAE,CAAC;oBAClC,MAAM,GAAG,CAAC,gBAAgB,CAAC,WAAW,EAAE,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;gBACnE,CAAC;YACL,CAAC,CAAA,CAAC,CAAC;YAEH,OAAO,IAAI,CAAC;QAChB,CAAC;KAAA;IAEM,MAAM,CAAO,cAAc,CAAC,WAAwB,EAAE,OAAiB,EAAE,MAAqB;;YACjG,IAAI,CAAC;gBACD,OAAO,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC,YAA8B,EAAE,YAAoB,EAAE,KAAa,EAAE,EAAE;oBAChG,OAAO,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;;wBAC3D,WAAW,CAAC,KAAK,CAAC,YAAY,EAAE,MAAA,MAAM,CAAC,KAAK,CAAC,mCAAI,EAAE,EAAE,CAAC,GAAY,EAAE,MAAiB,EAAQ,EAAE;4BAC3F,IAAI,GAAG,EAAE,CAAC;gCACN,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;4BACvB,CAAC;4BAED,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC;wBAC3B,CAAC,CAAC,CAAC;oBACP,CAAC,CAAC,CAAC,CAAC;gBACR,CAAC,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;YAC1B,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACb,OAAO,MAAM,IAAI,OAAO,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE;oBAC1C,WAAW,CAAC,QAAQ,CAAC,CAAC,WAAoB,EAAQ,EAAE;wBAChD,IAAI,WAAW,EAAE,CAAC;4BACd,OAAO,MAAM,CAAC,WAAW,CAAC,CAAC;wBAC/B,CAAC;wBAED,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;oBACzB,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;YACP,CAAC;QACL,CAAC;KAAA;;AAhcL,kBAicC;AAhckB,UAAM,GAAW,IAAI,eAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACtC,SAAK,GAAgC,IAAI,GAAG,EAAE,CAAC","sourcesContent":["import * as Firebird from \"node-firebird\";\nimport { ConnectionPool, Database, Options, QueryParams, Transaction } from \"node-firebird\";\nimport { Logger } from \"./Logger\";\nimport { RestUtilities } from \"./Utilities\";\nimport {\n describeFirebirdCompatibilityOptions,\n enhanceFirebirdError,\n FirebirdOptions,\n normalizeFirebirdOptions,\n} from \"./firebird-compat\";\n\nexport class Orm {\n private static logger: Logger = new Logger(Orm.name);\n private static pools: Map<string, ConnectionPool> = new Map();\n\n public static quote(value: string): string {\n return \"\\\"\" + value + \"\\\"\";\n }\n\n /** Dimensione pool: default 5 (pool attivo); `poolSize: 0` disabilita e torna all'attach per query. */\n private static getPoolSize(options: Options): number {\n const raw = (options as FirebirdOptions).poolSize;\n if (raw === 0) {\n return 0;\n }\n const size = raw === undefined ? 5 : Number(raw);\n return Number.isFinite(size) && size > 0 ? Math.trunc(size) : 0;\n }\n\n private static shouldLogQueryParameters(options: Options): boolean {\n return (options as FirebirdOptions).logQueryParameters === true;\n }\n\n private static formatQueryForLog(query: string, parameters: QueryParams, includeValues: boolean): string {\n const parameterList = Array.isArray(parameters) ? parameters : Object.values(parameters ?? {});\n if (includeValues) {\n return RestUtilities.printQueryWithParams(query, parameterList);\n }\n return `${query.replace(/\\s+/g, \" \").trim()} [params=${parameterList.length}]`;\n }\n\n private static buildPoolKey(options: Options, size: number): string {\n const normalized = normalizeFirebirdOptions(options);\n return [\n size,\n normalized.host ?? \"\",\n normalized.port ?? \"\",\n normalized.database ?? \"\",\n normalized.user ?? \"\",\n normalized.pluginName ?? \"\",\n String(normalized.wireCrypt ?? \"\"),\n ].join(\"|\");\n }\n\n /**\n * Chiude tutti i pool creati (opt-in `poolSize`). Utile a fine processo o nei test,\n * perché i pool mantengono connessioni e timer attivi.\n */\n public static async closePools(): Promise<void> {\n const pools = Array.from(this.pools.values());\n this.pools.clear();\n await Promise.all(pools.map((pool) => new Promise<void>((resolve) => {\n try {\n pool.destroy(() => resolve());\n } catch {\n resolve();\n }\n })));\n }\n\n private static getPool(options: Options, size: number): ConnectionPool {\n const normalized = normalizeFirebirdOptions(options);\n const key = this.buildPoolKey(normalized, size);\n let pool = this.pools.get(key);\n if (!pool) {\n this.logger.info(`Firebird pool created (max=${size}) using ${describeFirebirdCompatibilityOptions(normalized)}`);\n pool = Firebird.pool(size, normalized);\n pool.on(\"error\", (error: Error) => {\n this.logger.error(`Firebird pool error: ${error.message}`);\n });\n this.pools.set(key, pool);\n }\n return pool;\n }\n\n private static getTimeoutMs(options: Options): number {\n const candidate = (options as FirebirdOptions).connectTimeout ?? 15000;\n return Number.isFinite(candidate) && candidate > 0 ? Math.trunc(candidate) : 15000;\n }\n\n private static createTimeoutError(stage: string, timeoutMs: number, options: Options, query?: string): Error {\n const target = `${options.host ?? \"?\"}:${options.port ?? \"?\"} -> ${options.database ?? \"?\"}`;\n const suffix = query ? ` | sql=${query.replace(/\\s+/g, \" \").trim()}` : \"\";\n return new Error(`Timeout during Firebird ${stage} after ${timeoutMs} ms on ${target}${suffix}`);\n }\n\n private static async detachQuietly(db: Database | undefined): Promise<void> {\n if (!db) {\n return;\n }\n\n await new Promise<void>((resolve) => {\n try {\n db.detach(() => resolve());\n } catch {\n resolve();\n }\n });\n }\n\n private static shouldTrimStringResults(options: FirebirdOptions): boolean {\n return options.trimStringResults !== false;\n }\n\n private static normalizeResultValue(value: unknown, trimStringResults: boolean): unknown {\n if (!trimStringResults || value === undefined || value === null) {\n return value;\n }\n\n if (typeof value === \"string\" || value instanceof String) {\n return String(value).trimEnd();\n }\n\n if (Array.isArray(value)) {\n return value.map((item) => this.normalizeResultValue(item, trimStringResults));\n }\n\n if (value instanceof Date || Buffer.isBuffer(value)) {\n return value;\n }\n\n if (typeof value === \"object\") {\n const source = value as Record<string, unknown>;\n return Object.keys(source).reduce((normalized: Record<string, unknown>, key: string) => {\n normalized[key] = this.normalizeResultValue(source[key], trimStringResults);\n return normalized;\n }, {});\n }\n\n return value;\n }\n\n private static attachWithTimeout(options: Options): Promise<Database> {\n return new Promise((resolve, reject): void => {\n const normalizedOptions = normalizeFirebirdOptions(options);\n const timeoutMs = this.getTimeoutMs(normalizedOptions);\n const poolSize = this.getPoolSize(options);\n let settled = false;\n const timeoutId = setTimeout(() => {\n if (settled) {\n return;\n }\n\n settled = true;\n reject(\n enhanceFirebirdError(\n this.createTimeoutError(\"attach\", timeoutMs, normalizedOptions),\n normalizedOptions,\n { stage: \"attach\" },\n ),\n );\n }, timeoutMs);\n\n const handle = async (err: unknown, db: Database): Promise<void> => {\n if (settled) {\n await this.detachQuietly(db);\n return;\n }\n\n settled = true;\n clearTimeout(timeoutId);\n\n if (err) {\n return reject(enhanceFirebirdError(err, normalizedOptions, { stage: \"attach\" }));\n }\n\n return resolve(db);\n };\n\n try {\n if (poolSize > 0) {\n this.getPool(options, poolSize).get(handle);\n return;\n }\n\n this.logger.info(`Firebird attach using ${describeFirebirdCompatibilityOptions(normalizedOptions)}`);\n\n Firebird.attach(normalizedOptions, handle);\n } catch (error) {\n // Attach/get sincrono fallito: evita di lasciare il timer di timeout pendente.\n if (!settled) {\n settled = true;\n clearTimeout(timeoutId);\n reject(enhanceFirebirdError(error, normalizedOptions, { stage: \"attach\" }));\n }\n }\n });\n }\n\n public static async testConnection(options: Options): Promise<boolean> {\n return new Promise((resolve): void => {\n this.attachWithTimeout(options)\n .then(async (db: Database): Promise<void> => {\n this.logger.info(\"DATABASE connesso.\");\n await this.detachQuietly(db);\n resolve(true);\n })\n .catch((err: Error): void => {\n this.logger.error(\"La connessione con il DATABASE non e andata a buon fine.\");\n this.logger.error(err);\n resolve(false);\n });\n });\n }\n\n public static async query<T = Record<string, unknown>>(\n options: Options,\n query: string,\n parameters: QueryParams = [],\n logQuery = true,\n ): Promise<T[]> {\n try {\n const normalizedOptions = normalizeFirebirdOptions(options);\n const db = await this.attachWithTimeout(options);\n\n return await new Promise<T[]>((resolve, reject): void => {\n const timeoutMs = this.getTimeoutMs(normalizedOptions);\n let settled = false;\n const timeoutId = setTimeout(async () => {\n if (settled) {\n return;\n }\n\n settled = true;\n await this.detachQuietly(db);\n reject(\n enhanceFirebirdError(\n this.createTimeoutError(\"query\", timeoutMs, normalizedOptions, query),\n normalizedOptions,\n { stage: \"query\", sql: query },\n ),\n );\n }, timeoutMs);\n\n if (logQuery) {\n this.logger.info(this.formatQueryForLog(query, parameters, this.shouldLogQueryParameters(options)));\n }\n\n db.query<unknown>(query, parameters, async (error: unknown, result: unknown[]) => {\n if (settled) {\n await this.detachQuietly(db);\n return;\n }\n\n settled = true;\n clearTimeout(timeoutId);\n await this.detachQuietly(db);\n\n if (error) {\n return reject(enhanceFirebirdError(error, normalizedOptions, { stage: \"query\", sql: query }));\n }\n\n return resolve(this.normalizeResultValue(result, this.shouldTrimStringResults(normalizedOptions)) as T[]);\n });\n });\n } catch (error) {\n const normalizedError = enhanceFirebirdError(error, options, { stage: \"query\", sql: query });\n this.logger.error(normalizedError);\n throw normalizedError;\n }\n }\n\n public static async execute<T = Record<string, unknown>>(\n options: Options,\n query: string,\n parameters: QueryParams = [],\n logQuery = true,\n ): Promise<T[]> {\n try {\n const normalizedOptions = normalizeFirebirdOptions(options);\n const db = await this.attachWithTimeout(options);\n\n return await new Promise<T[]>((resolve, reject): void => {\n const timeoutMs = this.getTimeoutMs(normalizedOptions);\n let settled = false;\n const timeoutId = setTimeout(async () => {\n if (settled) {\n return;\n }\n\n settled = true;\n await this.detachQuietly(db);\n reject(\n enhanceFirebirdError(\n this.createTimeoutError(\"execute\", timeoutMs, normalizedOptions, query),\n normalizedOptions,\n { stage: \"execute\", sql: query },\n ),\n );\n }, timeoutMs);\n\n if (logQuery) {\n this.logger.info(this.formatQueryForLog(query, parameters, this.shouldLogQueryParameters(options)));\n }\n\n db.execute<unknown>(query, parameters, async (error: unknown, result: unknown[]) => {\n if (settled) {\n await this.detachQuietly(db);\n return;\n }\n\n settled = true;\n clearTimeout(timeoutId);\n await this.detachQuietly(db);\n\n if (error) {\n return reject(enhanceFirebirdError(error, normalizedOptions, { stage: \"execute\", sql: query }));\n }\n\n return resolve(this.normalizeResultValue(result, this.shouldTrimStringResults(normalizedOptions)) as T[]);\n });\n });\n } catch (error) {\n const normalizedError = enhanceFirebirdError(error, options, { stage: \"execute\", sql: query });\n this.logger.error(normalizedError);\n throw normalizedError;\n }\n }\n\n public static trimParam<T>(param: T): string | T {\n if (typeof param === \"string\" || param instanceof String) {\n return String(param).trim();\n }\n return param;\n }\n\n public static async connect(options: Options): Promise<Database> {\n return this.attachWithTimeout(options);\n }\n\n /**\n * Runs `operation` inside a single Firebird transaction: commit on success,\n * rollback on failure, detach in every case. Use it to make multi-statement\n * writes atomic instead of relying on auto-commit per statement.\n */\n public static async withTransaction<T>(\n options: Options,\n operation: (transaction: Transaction) => Promise<T>,\n ): Promise<T> {\n const db = await this.connect(options);\n let transaction: Transaction | undefined;\n\n try {\n transaction = await this.startTransaction(db);\n const result = await operation(transaction);\n await this.commitTransaction(transaction);\n return result;\n } catch (error) {\n if (transaction) {\n try {\n await this.rollbackTransaction(transaction);\n } catch {\n // Se la rollback fallisce (connessione persa) l'errore originale resta quello rilevante.\n }\n }\n throw error;\n } finally {\n await this.detachQuietly(db);\n }\n }\n\n /** Esegue una query su una transazione esistente e ne restituisce il risultato. */\n public static transactionQuery<T = unknown>(\n transaction: Transaction,\n query: string,\n parameters: QueryParams = [],\n ): Promise<T> {\n return new Promise<T>((resolve, reject): void => {\n transaction.query(query, parameters, (error: unknown, result: unknown[]): void => {\n if (error) {\n reject(error);\n return;\n }\n\n resolve(result as T);\n });\n });\n }\n\n public static async startTransaction(db: Database): Promise<Transaction> {\n return new Promise((resolve, reject): void => {\n db.transaction(Firebird.ISOLATION_READ_COMMITTED, function (err: unknown, transaction: Transaction): void {\n if (err) {\n return reject(err);\n }\n\n return resolve(transaction);\n });\n });\n }\n\n public static async commitTransaction(transaction: Transaction): Promise<string> {\n return new Promise((resolve, reject): void => {\n transaction.commit((err: unknown): void => {\n if (err) {\n return reject(err);\n }\n\n return resolve(\"Transaction committed successfully.\");\n });\n });\n }\n\n public static async rollbackTransaction(transaction: Transaction): Promise<string> {\n return new Promise((resolve, reject): void => {\n transaction.rollback((err: unknown): void => {\n if (err) {\n return reject(err);\n }\n\n return resolve(\"Transaction rolled back successfully.\");\n });\n });\n }\n\n public static async executeMultiple(options: Options, queriesWithParams: { query: string, params: QueryParams }[]): Promise<string> {\n await Orm.withTransaction(options, async (transaction) => {\n for (const qwp of queriesWithParams) {\n await Orm.transactionQuery(transaction, qwp.query, qwp.params);\n }\n });\n\n return \"OK\";\n }\n\n public static async executeQueries(transaction: Transaction, queries: string[], params: QueryParams[]): Promise<unknown> {\n try {\n return await queries.reduce((promiseChain: Promise<unknown>, currentQuery: string, index: number) => {\n return promiseChain.then(() => new Promise((resolve, reject) => {\n transaction.query(currentQuery, params[index] ?? [], (err: unknown, result: unknown[]): void => {\n if (err) {\n return reject(err);\n }\n\n return resolve(result);\n });\n }));\n }, Promise.resolve());\n } catch (error) {\n return await new Promise((_resolve, reject) => {\n transaction.rollback((rollbackErr: unknown): void => {\n if (rollbackErr) {\n return reject(rollbackErr);\n }\n\n return reject(error);\n });\n });\n }\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"Orm.js","sourceRoot":"","sources":["../src/Orm.ts"],"names":[],"mappings":"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","sourcesContent":["import * as Firebird from \"node-firebird\";\nimport { ConnectionPool, Database, Options, QueryParams, Transaction } from \"node-firebird\";\nimport { Logger } from \"./Logger\";\nimport { RestUtilities } from \"./Utilities\";\nimport {\n describeFirebirdCompatibilityOptions,\n enhanceFirebirdError,\n FirebirdOptions,\n normalizeFirebirdOptions,\n} from \"./firebird-compat\";\n\n/** Valore scalare di una colonna Firebird (riga flat). */\nexport type DbValue = string | number | boolean | Date | Buffer | null | undefined;\n\n/** Riga generica restituita da `Orm.query`/`Orm.execute` quando non si specifica un tipo. */\nexport type Row = Record<string, DbValue>;\n\nexport class Orm {\n private static logger: Logger = new Logger(Orm.name);\n private static pools: Map<string, ConnectionPool> = new Map();\n\n public static quote(value: string): string {\n return \"\\\"\" + value + \"\\\"\";\n }\n\n /** Dimensione pool: default 5 (pool attivo); `poolSize: 0` disabilita e torna all'attach per query. */\n private static getPoolSize(options: Options): number {\n const raw = (options as FirebirdOptions).poolSize;\n if (raw === 0) {\n return 0;\n }\n const size = raw === undefined ? 5 : Number(raw);\n return Number.isFinite(size) && size > 0 ? Math.trunc(size) : 0;\n }\n\n private static shouldLogQueryParameters(options: Options): boolean {\n return (options as FirebirdOptions).logQueryParameters === true;\n }\n\n private static formatQueryForLog(query: string, parameters: QueryParams, includeValues: boolean): string {\n const parameterList = Array.isArray(parameters) ? parameters : Object.values(parameters ?? {});\n if (includeValues) {\n return RestUtilities.printQueryWithParams(query, parameterList);\n }\n return `${query.replace(/\\s+/g, \" \").trim()} [params=${parameterList.length}]`;\n }\n\n private static buildPoolKey(options: Options, size: number): string {\n const normalized = normalizeFirebirdOptions(options);\n return [\n size,\n normalized.host ?? \"\",\n normalized.port ?? \"\",\n normalized.database ?? \"\",\n normalized.user ?? \"\",\n normalized.pluginName ?? \"\",\n String(normalized.wireCrypt ?? \"\"),\n ].join(\"|\");\n }\n\n /**\n * Chiude tutti i pool creati (opt-in `poolSize`). Utile a fine processo o nei test,\n * perché i pool mantengono connessioni e timer attivi.\n */\n public static async closePools(): Promise<void> {\n const pools = Array.from(this.pools.values());\n this.pools.clear();\n await Promise.all(pools.map((pool) => new Promise<void>((resolve) => {\n try {\n pool.destroy(() => resolve());\n } catch {\n resolve();\n }\n })));\n }\n\n private static getPool(options: Options, size: number): ConnectionPool {\n const normalized = normalizeFirebirdOptions(options);\n const key = this.buildPoolKey(normalized, size);\n let pool = this.pools.get(key);\n if (!pool) {\n this.logger.info(`Firebird pool created (max=${size}) using ${describeFirebirdCompatibilityOptions(normalized)}`);\n pool = Firebird.pool(size, normalized);\n pool.on(\"error\", (error: Error) => {\n this.logger.error(`Firebird pool error: ${error.message}`);\n });\n this.pools.set(key, pool);\n }\n return pool;\n }\n\n private static getTimeoutMs(options: Options): number {\n const candidate = (options as FirebirdOptions).connectTimeout ?? 15000;\n return Number.isFinite(candidate) && candidate > 0 ? Math.trunc(candidate) : 15000;\n }\n\n private static createTimeoutError(stage: string, timeoutMs: number, options: Options, query?: string): Error {\n const target = `${options.host ?? \"?\"}:${options.port ?? \"?\"} -> ${options.database ?? \"?\"}`;\n const suffix = query ? ` | sql=${query.replace(/\\s+/g, \" \").trim()}` : \"\";\n return new Error(`Timeout during Firebird ${stage} after ${timeoutMs} ms on ${target}${suffix}`);\n }\n\n private static async detachQuietly(db: Database | undefined): Promise<void> {\n if (!db) {\n return;\n }\n\n await new Promise<void>((resolve) => {\n try {\n db.detach(() => resolve());\n } catch {\n resolve();\n }\n });\n }\n\n private static shouldTrimStringResults(options: FirebirdOptions): boolean {\n return options.trimStringResults !== false;\n }\n\n private static normalizeResultValue(value: unknown, trimStringResults: boolean): unknown {\n if (!trimStringResults || value === undefined || value === null) {\n return value;\n }\n\n if (typeof value === \"string\" || value instanceof String) {\n return String(value).trimEnd();\n }\n\n if (Array.isArray(value)) {\n return value.map((item) => this.normalizeResultValue(item, trimStringResults));\n }\n\n if (value instanceof Date || Buffer.isBuffer(value)) {\n return value;\n }\n\n if (typeof value === \"object\") {\n const source = value as Record<string, unknown>;\n return Object.keys(source).reduce((normalized: Record<string, unknown>, key: string) => {\n normalized[key] = this.normalizeResultValue(source[key], trimStringResults);\n return normalized;\n }, {});\n }\n\n return value;\n }\n\n private static attachWithTimeout(options: Options): Promise<Database> {\n return new Promise((resolve, reject): void => {\n const normalizedOptions = normalizeFirebirdOptions(options);\n const timeoutMs = this.getTimeoutMs(normalizedOptions);\n const poolSize = this.getPoolSize(options);\n let settled = false;\n const timeoutId = setTimeout(() => {\n if (settled) {\n return;\n }\n\n settled = true;\n reject(\n enhanceFirebirdError(\n this.createTimeoutError(\"attach\", timeoutMs, normalizedOptions),\n normalizedOptions,\n { stage: \"attach\" },\n ),\n );\n }, timeoutMs);\n\n const handle = async (err: unknown, db: Database): Promise<void> => {\n if (settled) {\n await this.detachQuietly(db);\n return;\n }\n\n settled = true;\n clearTimeout(timeoutId);\n\n if (err) {\n return reject(enhanceFirebirdError(err, normalizedOptions, { stage: \"attach\" }));\n }\n\n return resolve(db);\n };\n\n try {\n if (poolSize > 0) {\n this.getPool(options, poolSize).get(handle);\n return;\n }\n\n this.logger.info(`Firebird attach using ${describeFirebirdCompatibilityOptions(normalizedOptions)}`);\n\n Firebird.attach(normalizedOptions, handle);\n } catch (error) {\n // Attach/get sincrono fallito: evita di lasciare il timer di timeout pendente.\n if (!settled) {\n settled = true;\n clearTimeout(timeoutId);\n reject(enhanceFirebirdError(error, normalizedOptions, { stage: \"attach\" }));\n }\n }\n });\n }\n\n public static async testConnection(options: Options): Promise<boolean> {\n return new Promise((resolve): void => {\n this.attachWithTimeout(options)\n .then(async (db: Database): Promise<void> => {\n this.logger.info(\"DATABASE connesso.\");\n await this.detachQuietly(db);\n resolve(true);\n })\n .catch((err: Error): void => {\n this.logger.error(\"La connessione con il DATABASE non e andata a buon fine.\");\n this.logger.error(err);\n resolve(false);\n });\n });\n }\n\n public static async query<T = Row>(\n options: Options,\n query: string,\n parameters: QueryParams = [],\n logQuery = true,\n ): Promise<T[]> {\n try {\n const normalizedOptions = normalizeFirebirdOptions(options);\n const db = await this.attachWithTimeout(options);\n\n return await new Promise<T[]>((resolve, reject): void => {\n const timeoutMs = this.getTimeoutMs(normalizedOptions);\n let settled = false;\n const timeoutId = setTimeout(async () => {\n if (settled) {\n return;\n }\n\n settled = true;\n await this.detachQuietly(db);\n reject(\n enhanceFirebirdError(\n this.createTimeoutError(\"query\", timeoutMs, normalizedOptions, query),\n normalizedOptions,\n { stage: \"query\", sql: query },\n ),\n );\n }, timeoutMs);\n\n if (logQuery) {\n this.logger.info(this.formatQueryForLog(query, parameters, this.shouldLogQueryParameters(options)));\n }\n\n db.query<unknown>(query, parameters, async (error: unknown, result: unknown[]) => {\n if (settled) {\n await this.detachQuietly(db);\n return;\n }\n\n settled = true;\n clearTimeout(timeoutId);\n await this.detachQuietly(db);\n\n if (error) {\n return reject(enhanceFirebirdError(error, normalizedOptions, { stage: \"query\", sql: query }));\n }\n\n return resolve(this.normalizeResultValue(result, this.shouldTrimStringResults(normalizedOptions)) as T[]);\n });\n });\n } catch (error) {\n const normalizedError = enhanceFirebirdError(error, options, { stage: \"query\", sql: query });\n this.logger.error(normalizedError);\n throw normalizedError;\n }\n }\n\n public static async execute<T = Row>(\n options: Options,\n query: string,\n parameters: QueryParams = [],\n logQuery = true,\n ): Promise<T[]> {\n try {\n const normalizedOptions = normalizeFirebirdOptions(options);\n const db = await this.attachWithTimeout(options);\n\n return await new Promise<T[]>((resolve, reject): void => {\n const timeoutMs = this.getTimeoutMs(normalizedOptions);\n let settled = false;\n const timeoutId = setTimeout(async () => {\n if (settled) {\n return;\n }\n\n settled = true;\n await this.detachQuietly(db);\n reject(\n enhanceFirebirdError(\n this.createTimeoutError(\"execute\", timeoutMs, normalizedOptions, query),\n normalizedOptions,\n { stage: \"execute\", sql: query },\n ),\n );\n }, timeoutMs);\n\n if (logQuery) {\n this.logger.info(this.formatQueryForLog(query, parameters, this.shouldLogQueryParameters(options)));\n }\n\n db.execute<unknown>(query, parameters, async (error: unknown, result: unknown[]) => {\n if (settled) {\n await this.detachQuietly(db);\n return;\n }\n\n settled = true;\n clearTimeout(timeoutId);\n await this.detachQuietly(db);\n\n if (error) {\n return reject(enhanceFirebirdError(error, normalizedOptions, { stage: \"execute\", sql: query }));\n }\n\n return resolve(this.normalizeResultValue(result, this.shouldTrimStringResults(normalizedOptions)) as T[]);\n });\n });\n } catch (error) {\n const normalizedError = enhanceFirebirdError(error, options, { stage: \"execute\", sql: query });\n this.logger.error(normalizedError);\n throw normalizedError;\n }\n }\n\n public static trimParam<T>(param: T): string | T {\n if (typeof param === \"string\" || param instanceof String) {\n return String(param).trim();\n }\n return param;\n }\n\n public static async connect(options: Options): Promise<Database> {\n return this.attachWithTimeout(options);\n }\n\n /**\n * Runs `operation` inside a single Firebird transaction: commit on success,\n * rollback on failure, detach in every case. Use it to make multi-statement\n * writes atomic instead of relying on auto-commit per statement.\n */\n public static async withTransaction<T>(\n options: Options,\n operation: (transaction: Transaction) => Promise<T>,\n ): Promise<T> {\n const db = await this.connect(options);\n let transaction: Transaction | undefined;\n\n try {\n transaction = await this.startTransaction(db);\n const result = await operation(transaction);\n await this.commitTransaction(transaction);\n return result;\n } catch (error) {\n if (transaction) {\n try {\n await this.rollbackTransaction(transaction);\n } catch {\n // Se la rollback fallisce (connessione persa) l'errore originale resta quello rilevante.\n }\n }\n throw error;\n } finally {\n await this.detachQuietly(db);\n }\n }\n\n /** Esegue una query su una transazione esistente e ne restituisce il risultato. */\n public static transactionQuery<T = Row[]>(\n transaction: Transaction,\n query: string,\n parameters: QueryParams = [],\n ): Promise<T> {\n return new Promise<T>((resolve, reject): void => {\n transaction.query(query, parameters, (error: unknown, result: unknown[]): void => {\n if (error) {\n reject(error);\n return;\n }\n\n resolve(result as T);\n });\n });\n }\n\n public static async startTransaction(db: Database): Promise<Transaction> {\n return new Promise((resolve, reject): void => {\n db.transaction(Firebird.ISOLATION_READ_COMMITTED, function (err: unknown, transaction: Transaction): void {\n if (err) {\n return reject(err);\n }\n\n return resolve(transaction);\n });\n });\n }\n\n public static async commitTransaction(transaction: Transaction): Promise<string> {\n return new Promise((resolve, reject): void => {\n transaction.commit((err: unknown): void => {\n if (err) {\n return reject(err);\n }\n\n return resolve(\"Transaction committed successfully.\");\n });\n });\n }\n\n public static async rollbackTransaction(transaction: Transaction): Promise<string> {\n return new Promise((resolve, reject): void => {\n transaction.rollback((err: unknown): void => {\n if (err) {\n return reject(err);\n }\n\n return resolve(\"Transaction rolled back successfully.\");\n });\n });\n }\n\n public static async executeMultiple(options: Options, queriesWithParams: { query: string, params: QueryParams }[]): Promise<string> {\n await Orm.withTransaction(options, async (transaction) => {\n for (const qwp of queriesWithParams) {\n await Orm.transactionQuery(transaction, qwp.query, qwp.params);\n }\n });\n\n return \"OK\";\n }\n\n public static async executeQueries(transaction: Transaction, queries: string[], params: QueryParams[]): Promise<unknown> {\n try {\n return await queries.reduce((promiseChain: Promise<unknown>, currentQuery: string, index: number) => {\n return promiseChain.then(() => new Promise((resolve, reject) => {\n transaction.query(currentQuery, params[index] ?? [], (err: unknown, result: unknown[]): void => {\n if (err) {\n return reject(err);\n }\n\n return resolve(result);\n });\n }));\n }, Promise.resolve());\n } catch (error) {\n return await new Promise((_resolve, reject) => {\n transaction.rollback((rollbackErr: unknown): void => {\n if (rollbackErr) {\n return reject(rollbackErr);\n }\n\n return reject(error);\n });\n });\n }\n }\n}\n"]}
|
|
@@ -45,7 +45,7 @@ export declare class AuthService {
|
|
|
45
45
|
*/
|
|
46
46
|
setPassword(codiceUtente: number, nuovaPassword: string, options?: {
|
|
47
47
|
enforcePolicy?: boolean;
|
|
48
|
-
}): Promise<
|
|
48
|
+
}): Promise<import("../../../Orm").Row[]>;
|
|
49
49
|
/**
|
|
50
50
|
* Converte le password legacy cifrate nel formato hash compatibile, senza conoscere le password in chiaro.
|
|
51
51
|
* E idempotente: hash moderni e gia migrati vengono ignorati.
|
|
Binary file
|
package/package.json
CHANGED
|
Binary file
|