myorm_pg 1.0.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.
Files changed (82) hide show
  1. package/lib/Index.d.ts +29 -0
  2. package/lib/Index.d.ts.map +1 -0
  3. package/lib/Index.js +52 -0
  4. package/lib/Index.js.map +1 -0
  5. package/lib/core/decorators/SchemasDecorators.d.ts +42 -0
  6. package/lib/core/decorators/SchemasDecorators.d.ts.map +1 -0
  7. package/lib/core/decorators/SchemasDecorators.js +81 -0
  8. package/lib/core/decorators/SchemasDecorators.js.map +1 -0
  9. package/lib/core/design/Type.d.ts +37 -0
  10. package/lib/core/design/Type.d.ts.map +1 -0
  11. package/lib/core/design/Type.js +132 -0
  12. package/lib/core/design/Type.js.map +1 -0
  13. package/lib/core/enums/DBTypes.d.ts +19 -0
  14. package/lib/core/enums/DBTypes.d.ts.map +1 -0
  15. package/lib/core/enums/DBTypes.js +23 -0
  16. package/lib/core/enums/DBTypes.js.map +1 -0
  17. package/lib/core/enums/RelationType.d.ts +7 -0
  18. package/lib/core/enums/RelationType.d.ts.map +1 -0
  19. package/lib/core/enums/RelationType.js +11 -0
  20. package/lib/core/enums/RelationType.js.map +1 -0
  21. package/lib/core/exceptions/ConnectionFailException.d.ts +5 -0
  22. package/lib/core/exceptions/ConnectionFailException.d.ts.map +1 -0
  23. package/lib/core/exceptions/ConnectionFailException.js +13 -0
  24. package/lib/core/exceptions/ConnectionFailException.js.map +1 -0
  25. package/lib/core/exceptions/Exception.d.ts +5 -0
  26. package/lib/core/exceptions/Exception.d.ts.map +1 -0
  27. package/lib/core/exceptions/Exception.js +10 -0
  28. package/lib/core/exceptions/Exception.js.map +1 -0
  29. package/lib/core/exceptions/InvalidOperationException.d.ts +6 -0
  30. package/lib/core/exceptions/InvalidOperationException.d.ts.map +1 -0
  31. package/lib/core/exceptions/InvalidOperationException.js +14 -0
  32. package/lib/core/exceptions/InvalidOperationException.js.map +1 -0
  33. package/lib/core/exceptions/NotImplementedException.d.ts +5 -0
  34. package/lib/core/exceptions/NotImplementedException.d.ts.map +1 -0
  35. package/lib/core/exceptions/NotImplementedException.js +13 -0
  36. package/lib/core/exceptions/NotImplementedException.js.map +1 -0
  37. package/lib/core/exceptions/QueryFailException.d.ts +6 -0
  38. package/lib/core/exceptions/QueryFailException.d.ts.map +1 -0
  39. package/lib/core/exceptions/QueryFailException.js +14 -0
  40. package/lib/core/exceptions/QueryFailException.js.map +1 -0
  41. package/lib/core/exceptions/TypeNotSuportedException.d.ts +5 -0
  42. package/lib/core/exceptions/TypeNotSuportedException.d.ts.map +1 -0
  43. package/lib/core/exceptions/TypeNotSuportedException.js +13 -0
  44. package/lib/core/exceptions/TypeNotSuportedException.js.map +1 -0
  45. package/lib/core/objects/interfaces/IDBConnection.d.ts +13 -0
  46. package/lib/core/objects/interfaces/IDBConnection.d.ts.map +1 -0
  47. package/lib/core/objects/interfaces/IDBConnection.js +3 -0
  48. package/lib/core/objects/interfaces/IDBConnection.js.map +1 -0
  49. package/lib/core/objects/interfaces/IDBContext.d.ts +8 -0
  50. package/lib/core/objects/interfaces/IDBContext.d.ts.map +1 -0
  51. package/lib/core/objects/interfaces/IDBContext.js +3 -0
  52. package/lib/core/objects/interfaces/IDBContext.js.map +1 -0
  53. package/lib/core/objects/interfaces/IDBManager.d.ts +12 -0
  54. package/lib/core/objects/interfaces/IDBManager.d.ts.map +1 -0
  55. package/lib/core/objects/interfaces/IDBManager.js +3 -0
  56. package/lib/core/objects/interfaces/IDBManager.js.map +1 -0
  57. package/lib/core/objects/interfaces/IDBSet.d.ts +16 -0
  58. package/lib/core/objects/interfaces/IDBSet.d.ts.map +1 -0
  59. package/lib/core/objects/interfaces/IDBSet.js +3 -0
  60. package/lib/core/objects/interfaces/IDBSet.js.map +1 -0
  61. package/lib/core/objects/interfaces/IStatement.d.ts +15 -0
  62. package/lib/core/objects/interfaces/IStatement.d.ts.map +1 -0
  63. package/lib/core/objects/interfaces/IStatement.js +14 -0
  64. package/lib/core/objects/interfaces/IStatement.js.map +1 -0
  65. package/lib/implementations/PGDBConnection.d.ts +18 -0
  66. package/lib/implementations/PGDBConnection.d.ts.map +1 -0
  67. package/lib/implementations/PGDBConnection.js +98 -0
  68. package/lib/implementations/PGDBConnection.js.map +1 -0
  69. package/lib/implementations/PGDBContext.d.ts +17 -0
  70. package/lib/implementations/PGDBContext.d.ts.map +1 -0
  71. package/lib/implementations/PGDBContext.js +57 -0
  72. package/lib/implementations/PGDBContext.js.map +1 -0
  73. package/lib/implementations/PGDBManager.d.ts +26 -0
  74. package/lib/implementations/PGDBManager.d.ts.map +1 -0
  75. package/lib/implementations/PGDBManager.js +178 -0
  76. package/lib/implementations/PGDBManager.js.map +1 -0
  77. package/lib/implementations/PGDBSet.d.ts +37 -0
  78. package/lib/implementations/PGDBSet.d.ts.map +1 -0
  79. package/lib/implementations/PGDBSet.js +618 -0
  80. package/lib/implementations/PGDBSet.js.map +1 -0
  81. package/package.json +31 -0
  82. package/readme.md +316 -0
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const Exception_1 = __importDefault(require("./Exception"));
7
+ class QueryFailException extends Exception_1.default {
8
+ constructor(message, query) {
9
+ super(message);
10
+ this.Query = query;
11
+ }
12
+ }
13
+ exports.default = QueryFailException;
14
+ //# sourceMappingURL=QueryFailException.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"QueryFailException.js","sourceRoot":"","sources":["../../../src/core/exceptions/QueryFailException.ts"],"names":[],"mappings":";;;;;AAAA,4DAAoC;AAEpC,MAAqB,kBAAmB,SAAQ,mBAAS;IAIrD,YAAY,OAAgB,EAAE,KAAc;QAExC,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACvB,CAAC;CACJ;AATD,qCASC"}
@@ -0,0 +1,5 @@
1
+ import Exception from "./Exception";
2
+ export default class TypeNotSuportedException extends Exception {
3
+ constructor(message: string);
4
+ }
5
+ //# sourceMappingURL=TypeNotSuportedException.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TypeNotSuportedException.d.ts","sourceRoot":"","sources":["../../../src/core/exceptions/TypeNotSuportedException.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,aAAa,CAAC;AAEpC,MAAM,CAAC,OAAO,OAAO,wBAAyB,SAAQ,SAAS;gBAE/C,OAAO,EAAG,MAAM;CAI/B"}
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const Exception_1 = __importDefault(require("./Exception"));
7
+ class TypeNotSuportedException extends Exception_1.default {
8
+ constructor(message) {
9
+ super(message);
10
+ }
11
+ }
12
+ exports.default = TypeNotSuportedException;
13
+ //# sourceMappingURL=TypeNotSuportedException.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TypeNotSuportedException.js","sourceRoot":"","sources":["../../../src/core/exceptions/TypeNotSuportedException.ts"],"names":[],"mappings":";;;;;AAAA,4DAAoC;AAEpC,MAAqB,wBAAyB,SAAQ,mBAAS;IAE3D,YAAY,OAAgB;QAExB,KAAK,CAAC,OAAO,CAAC,CAAC;IACnB,CAAC;CACJ;AAND,2CAMC"}
@@ -0,0 +1,13 @@
1
+ export default interface IDBConnection {
2
+ HostName: string;
3
+ Port: number;
4
+ DataBaseName: string;
5
+ UserName: string;
6
+ PassWord: string;
7
+ Open(): Promise<void>;
8
+ Query(query: string): Promise<any>;
9
+ Close(): void;
10
+ ExecuteNonQuery(query: string): Promise<void>;
11
+ Execute(query: string): Promise<any>;
12
+ }
13
+ //# sourceMappingURL=IDBConnection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IDBConnection.d.ts","sourceRoot":"","sources":["../../../../src/core/objects/interfaces/IDBConnection.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,OAAO,WAAW,aAAa;IAElC,QAAQ,EAAG,MAAM,CAAC;IAClB,IAAI,EAAG,MAAM,CAAC;IACd,YAAY,EAAG,MAAM,CAAC;IACtB,QAAQ,EAAG,MAAM,CAAC;IAClB,QAAQ,EAAG,MAAM,CAAC;IAClB,IAAI,IAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,KAAK,CAAC,KAAK,EAAG,MAAM,GAAI,OAAO,CAAC,GAAG,CAAC,CAAC;IACrC,KAAK,IAAK,IAAI,CAAC;IACf,eAAe,CAAC,KAAK,EAAG,MAAM,GAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAChD,OAAO,CAAC,KAAK,EAAG,MAAM,GAAI,OAAO,CAAC,GAAG,CAAC,CAAC;CAE1C"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=IDBConnection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IDBConnection.js","sourceRoot":"","sources":["../../../../src/core/objects/interfaces/IDBConnection.ts"],"names":[],"mappings":""}
@@ -0,0 +1,8 @@
1
+ import IDBSet from './IDBSet';
2
+ export default interface IDBContext {
3
+ Collection<T>(cTor: {
4
+ new (...args: any[]): T;
5
+ }): IDBSet<T> | undefined;
6
+ UpdateDatabaseAsync(): Promise<void>;
7
+ }
8
+ //# sourceMappingURL=IDBContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IDBContext.d.ts","sourceRoot":"","sources":["../../../../src/core/objects/interfaces/IDBContext.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,UAAU,CAAC;AAE9B,MAAM,CAAC,OAAO,WAAW,UAAU;IAE/B,UAAU,CAAC,CAAC,EAAE,IAAI,EAAG;QAAC,KAAK,GAAG,IAAI,EAAG,GAAG,EAAE,GAAI,CAAC,CAAA;KAAC,GAAI,MAAM,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;IAE1E,mBAAmB,IAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACzC"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=IDBContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IDBContext.js","sourceRoot":"","sources":["../../../../src/core/objects/interfaces/IDBContext.ts"],"names":[],"mappings":""}
@@ -0,0 +1,12 @@
1
+ export default interface IDBManager {
2
+ CheckDatabase(dababase: string): Promise<boolean>;
3
+ CreateDataBase(dababase: string): Promise<void>;
4
+ CheckTable(cTor: Function): Promise<boolean>;
5
+ CreateTable(cTor: Function): Promise<void>;
6
+ CheckColumn(cTor: Function, key: string): Promise<boolean>;
7
+ CreateColumn(cTor: Function, key: string): Promise<void>;
8
+ UpdateDatabaseForEntity(cTor: Function): Promise<void>;
9
+ ExecuteNonQuery(query: string): Promise<void>;
10
+ Execute(query: string): Promise<any>;
11
+ }
12
+ //# sourceMappingURL=IDBManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IDBManager.d.ts","sourceRoot":"","sources":["../../../../src/core/objects/interfaces/IDBManager.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,OAAO,WAAW,UAAU;IAE/B,aAAa,CAAC,QAAQ,EAAG,MAAM,GAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAEpD,cAAc,CAAC,QAAQ,EAAG,MAAM,GAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAElD,UAAU,CAAC,IAAI,EAAG,QAAQ,GAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAE/C,WAAW,CAAC,IAAI,EAAG,QAAQ,GAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAE7C,WAAW,CAAC,IAAI,EAAG,QAAQ,EAAE,GAAG,EAAG,MAAM,GAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAE9D,YAAY,CAAC,IAAI,EAAG,QAAQ,EAAE,GAAG,EAAG,MAAM,GAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAE5D,uBAAuB,CAAC,IAAI,EAAG,QAAQ,GAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEzD,eAAe,CAAC,KAAK,EAAG,MAAM,GAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEhD,OAAO,CAAC,KAAK,EAAG,MAAM,GAAI,OAAO,CAAC,GAAG,CAAC,CAAC;CAE1C"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=IDBManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IDBManager.js","sourceRoot":"","sources":["../../../../src/core/objects/interfaces/IDBManager.ts"],"names":[],"mappings":""}
@@ -0,0 +1,16 @@
1
+ import IStatement from "./IStatement";
2
+ export default interface IDBSet<T> {
3
+ AddAsync(obj: T): Promise<T>;
4
+ UpdateAsync(obj: T): Promise<T>;
5
+ DeleteAsync(obj: T): Promise<T>;
6
+ Where<K extends keyof T>(statement: IStatement<T, K>): IDBSet<T>;
7
+ And<K extends keyof T>(statement: IStatement<T, K>): IDBSet<T>;
8
+ Or<K extends keyof T>(statement: IStatement<T, K>): IDBSet<T>;
9
+ OrderBy<K extends keyof T>(key: K): IDBSet<T>;
10
+ OrderDescendingBy<K extends keyof T>(key: K): IDBSet<T>;
11
+ Join<K extends keyof T>(key: K): IDBSet<T>;
12
+ Limit(limit: number): IDBSet<T>;
13
+ ToListAsync(): Promise<T[]>;
14
+ FirstOrDefaultAsync(): Promise<T | undefined>;
15
+ }
16
+ //# sourceMappingURL=IDBSet.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IDBSet.d.ts","sourceRoot":"","sources":["../../../../src/core/objects/interfaces/IDBSet.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,cAAc,CAAC;AAGtC,MAAM,CAAC,OAAO,WAAW,MAAM,CAAC,CAAC;IAE7B,QAAQ,CAAC,GAAG,EAAG,CAAC,GAAI,OAAO,CAAC,CAAC,CAAC,CAAC;IAC/B,WAAW,CAAC,GAAG,EAAG,CAAC,GAAI,OAAO,CAAC,CAAC,CAAC,CAAC;IAClC,WAAW,CAAC,GAAG,EAAG,CAAC,GAAI,OAAO,CAAC,CAAC,CAAC,CAAC;IAClC,KAAK,CAAC,CAAC,SAAS,MAAM,CAAC,EAAE,SAAS,EAAG,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,GAAI,MAAM,CAAC,CAAC,CAAC,CAAC;IACnE,GAAG,CAAC,CAAC,SAAS,MAAM,CAAC,EAAE,SAAS,EAAG,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,GAAI,MAAM,CAAC,CAAC,CAAC,CAAC;IACjE,EAAE,CAAC,CAAC,SAAS,MAAM,CAAC,EAAE,SAAS,EAAG,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,GAAI,MAAM,CAAC,CAAC,CAAC,CAAC;IAChE,OAAO,CAAC,CAAC,SAAS,MAAM,CAAC,EAAE,GAAG,EAAG,CAAC,GAAI,MAAM,CAAC,CAAC,CAAC,CAAC;IAChD,iBAAiB,CAAC,CAAC,SAAS,MAAM,CAAC,EAAE,GAAG,EAAG,CAAC,GAAI,MAAM,CAAC,CAAC,CAAC,CAAC;IAC1D,IAAI,CAAC,CAAC,SAAS,MAAM,CAAC,EAAE,GAAG,EAAG,CAAC,GAAI,MAAM,CAAC,CAAC,CAAC,CAAC;IAC7C,KAAK,CAAC,KAAK,EAAG,MAAM,GAAI,MAAM,CAAC,CAAC,CAAC,CAAC;IAClC,WAAW,IAAK,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;IAC7B,mBAAmB,IAAK,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;CAClD"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=IDBSet.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IDBSet.js","sourceRoot":"","sources":["../../../../src/core/objects/interfaces/IDBSet.ts"],"names":[],"mappings":""}
@@ -0,0 +1,15 @@
1
+ export default interface IStatement<T, K extends keyof T> {
2
+ Field: K;
3
+ Kind?: Operation;
4
+ Value: T[K];
5
+ }
6
+ export declare enum Operation {
7
+ EQUALS = "==",
8
+ NOTEQUALS = "!=",
9
+ STARTWITH = "%_",
10
+ ENDWITH = "_%",
11
+ CONSTAINS = "%_%",
12
+ GREATHER = ">",
13
+ SMALLER = "<"
14
+ }
15
+ //# sourceMappingURL=IStatement.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IStatement.d.ts","sourceRoot":"","sources":["../../../../src/core/objects/interfaces/IStatement.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,OAAO,WAAW,UAAU,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC;IAEpD,KAAK,EAAG,CAAC,CAAC;IACV,IAAI,CAAC,EAAG,SAAS,CAAC;IAClB,KAAK,EAAG,CAAC,CAAC,CAAC,CAAC,CAAA;CACf;AAGD,oBAAY,SAAS;IAEjB,MAAM,OAAO;IACb,SAAS,OAAO;IAChB,SAAS,OAAO;IAChB,OAAO,OAAO;IACd,SAAS,QAAQ;IACjB,QAAQ,MAAM;IACd,OAAO,MAAM;CAChB"}
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Operation = void 0;
4
+ var Operation;
5
+ (function (Operation) {
6
+ Operation["EQUALS"] = "==";
7
+ Operation["NOTEQUALS"] = "!=";
8
+ Operation["STARTWITH"] = "%_";
9
+ Operation["ENDWITH"] = "_%";
10
+ Operation["CONSTAINS"] = "%_%";
11
+ Operation["GREATHER"] = ">";
12
+ Operation["SMALLER"] = "<";
13
+ })(Operation = exports.Operation || (exports.Operation = {}));
14
+ //# sourceMappingURL=IStatement.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IStatement.js","sourceRoot":"","sources":["../../../../src/core/objects/interfaces/IStatement.ts"],"names":[],"mappings":";;;AAUA,IAAY,SASX;AATD,WAAY,SAAS;IAEjB,0BAAa,CAAA;IACb,6BAAgB,CAAA;IAChB,6BAAgB,CAAA;IAChB,2BAAc,CAAA;IACd,8BAAiB,CAAA;IACjB,2BAAc,CAAA;IACd,0BAAa,CAAA;AACjB,CAAC,EATW,SAAS,GAAT,iBAAS,KAAT,iBAAS,QASpB"}
@@ -0,0 +1,18 @@
1
+ import IDBConnection from "../core/objects/interfaces/IDBConnection";
2
+ export default class PGDBConnection implements IDBConnection {
3
+ HostName: string;
4
+ Port: number;
5
+ DataBaseName: string;
6
+ UserName: string;
7
+ PassWord: string;
8
+ private _conn;
9
+ private _database;
10
+ constructor(host: string, port: number, dababase: string, user: string, pass: string);
11
+ AsPostgres(): PGDBConnection;
12
+ Open(): Promise<void>;
13
+ Query(query: string): Promise<any>;
14
+ Close(): Promise<void>;
15
+ ExecuteNonQuery(query: string): Promise<void>;
16
+ Execute(query: string): Promise<any>;
17
+ }
18
+ //# sourceMappingURL=PGDBConnection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PGDBConnection.d.ts","sourceRoot":"","sources":["../../src/implementations/PGDBConnection.ts"],"names":[],"mappings":"AAEA,OAAO,aAAa,MAAM,0CAA0C,CAAC;AAIrE,MAAM,CAAC,OAAO,OAAO,cAAe,YAAW,aAAa;IAEjD,QAAQ,EAAG,MAAM,CAAC;IAClB,IAAI,EAAG,MAAM,CAAC;IACd,YAAY,EAAG,MAAM,CAAC;IACtB,QAAQ,EAAG,MAAM,CAAC;IAClB,QAAQ,EAAG,MAAM,CAAC;IACzB,OAAO,CAAC,KAAK,CAAc;IAC3B,OAAO,CAAC,SAAS,CAAW;gBAEhB,IAAI,EAAG,MAAM,EAAE,IAAI,EAAG,MAAM,EAAE,QAAQ,EAAG,MAAM,EAAE,IAAI,EAAG,MAAM,EAAE,IAAI,EAAG,MAAM;IAUlF,UAAU,IAAK,cAAc;IAM7B,IAAI,IAAK,OAAO,CAAC,IAAI,CAAC;IA6BtB,KAAK,CAAC,KAAK,EAAG,MAAM,GAAI,OAAO,CAAC,GAAG,CAAC;IAiBpC,KAAK;IAmBC,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAkB7C,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;CAcpD"}
@@ -0,0 +1,98 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ const pg_1 = __importDefault(require("pg"));
16
+ const ConnectionFailException_1 = __importDefault(require("../core/exceptions/ConnectionFailException"));
17
+ const QueryFailException_1 = __importDefault(require("../core/exceptions/QueryFailException"));
18
+ class PGDBConnection {
19
+ constructor(host, port, dababase, user, pass) {
20
+ this.HostName = host;
21
+ this.Port = port;
22
+ this.DataBaseName = dababase;
23
+ this._database = dababase;
24
+ this.UserName = user;
25
+ this.PassWord = pass;
26
+ }
27
+ AsPostgres() {
28
+ this.DataBaseName = "postgres";
29
+ return this;
30
+ }
31
+ Open() {
32
+ return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {
33
+ this._conn = new pg_1.default.Client({
34
+ host: this.HostName,
35
+ port: this.Port,
36
+ database: this.DataBaseName,
37
+ user: this.UserName,
38
+ password: this.PassWord
39
+ });
40
+ this.DataBaseName = this._database;
41
+ try {
42
+ yield this._conn.connect();
43
+ resolve();
44
+ }
45
+ catch (err) {
46
+ reject(new ConnectionFailException_1.default(err.message));
47
+ }
48
+ }));
49
+ }
50
+ Query(query) {
51
+ return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {
52
+ try {
53
+ resolve(yield this._conn.query(query));
54
+ }
55
+ catch (err) {
56
+ reject(new ConnectionFailException_1.default(err.message));
57
+ }
58
+ }));
59
+ }
60
+ Close() {
61
+ return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {
62
+ try {
63
+ yield this._conn.end();
64
+ resolve();
65
+ }
66
+ catch (err) {
67
+ reject(new ConnectionFailException_1.default(err.message));
68
+ }
69
+ }));
70
+ }
71
+ ExecuteNonQuery(query) {
72
+ return __awaiter(this, void 0, void 0, function* () {
73
+ return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {
74
+ try {
75
+ yield this._conn.query(query);
76
+ resolve();
77
+ }
78
+ catch (err) {
79
+ reject(new QueryFailException_1.default(err.message, query));
80
+ }
81
+ }));
82
+ });
83
+ }
84
+ Execute(query) {
85
+ return __awaiter(this, void 0, void 0, function* () {
86
+ return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {
87
+ try {
88
+ resolve(yield this._conn.query(query));
89
+ }
90
+ catch (err) {
91
+ reject(new QueryFailException_1.default(err.message, query));
92
+ }
93
+ }));
94
+ });
95
+ }
96
+ }
97
+ exports.default = PGDBConnection;
98
+ //# sourceMappingURL=PGDBConnection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PGDBConnection.js","sourceRoot":"","sources":["../../src/implementations/PGDBConnection.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import IDBContext from "../core/objects/interfaces/IDBContext";
2
+ import IDBSet from "../core/objects/interfaces/IDBSet";
3
+ import PGDBManager from "./PGDBManager";
4
+ export default abstract class PGDBContext implements IDBContext {
5
+ protected _manager: PGDBManager;
6
+ private _mappedTypes;
7
+ constructor(manager: PGDBManager);
8
+ GetMappedTypes(): (new (...args: any[]) => unknown)[];
9
+ IsMapped(type: {
10
+ new (...args: any[]): unknown;
11
+ }): boolean;
12
+ Collection<T>(cTor: {
13
+ new (...args: any[]): T;
14
+ }): IDBSet<T> | undefined;
15
+ UpdateDatabaseAsync(): Promise<void>;
16
+ }
17
+ //# sourceMappingURL=PGDBContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PGDBContext.d.ts","sourceRoot":"","sources":["../../src/implementations/PGDBContext.ts"],"names":[],"mappings":"AACA,OAAO,UAAU,MAAM,uCAAuC,CAAC;AAC/D,OAAO,MAAM,MAAM,mCAAmC,CAAC;AACvD,OAAO,WAAW,MAAM,eAAe,CAAC;AAGxC,MAAM,CAAC,OAAO,CAAC,QAAQ,OAAO,WAAY,YAAW,UAAU;IAE3D,SAAS,CAAC,QAAQ,EAAE,WAAW,CAAC;IAEhC,OAAO,CAAC,YAAY,CAAuC;gBAE/C,OAAO,EAAG,WAAW;IAM1B,cAAc;IAoBd,QAAQ,CAAC,IAAI,EAAG;QAAC,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,GAAI,OAAO,CAAA;KAAC,GAAI,OAAO;IAK3D,UAAU,CAAC,CAAC,EAAE,IAAI,EAAI;QAAC,KAAK,GAAG,IAAI,EAAG,GAAG,EAAE,GAAI,CAAC,CAAA;KAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,SAAS;IAenE,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;CAcpD"}
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ const PGDBSet_1 = __importDefault(require("./PGDBSet"));
16
+ class PGDBContext {
17
+ constructor(manager) {
18
+ this._manager = manager;
19
+ }
20
+ GetMappedTypes() {
21
+ if (this._mappedTypes != undefined)
22
+ return this._mappedTypes;
23
+ this._mappedTypes = [];
24
+ let props = Object.keys(this);
25
+ for (let prop of props) {
26
+ if (this[prop].constructor == PGDBSet_1.default) {
27
+ this._mappedTypes.push(this[prop]["_type"]);
28
+ }
29
+ }
30
+ return this._mappedTypes;
31
+ }
32
+ IsMapped(type) {
33
+ return this.GetMappedTypes().filter(t => t == type).length > 0;
34
+ }
35
+ Collection(cTor) {
36
+ for (let prop of Object.keys(this)) {
37
+ let type = this[prop]["_type"];
38
+ if (type == undefined)
39
+ continue;
40
+ if (type == cTor)
41
+ return this[prop];
42
+ }
43
+ return undefined;
44
+ }
45
+ UpdateDatabaseAsync() {
46
+ return __awaiter(this, void 0, void 0, function* () {
47
+ let dbName = this._manager["_connection"].DataBaseName;
48
+ if (!(yield this._manager.CheckDatabase(dbName)))
49
+ yield this._manager.CreateDataBase(dbName);
50
+ for (let type of this._mappedTypes) {
51
+ yield this._manager.UpdateDatabaseForEntity(type);
52
+ }
53
+ });
54
+ }
55
+ }
56
+ exports.default = PGDBContext;
57
+ //# sourceMappingURL=PGDBContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PGDBContext.js","sourceRoot":"","sources":["../../src/implementations/PGDBContext.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAIA,wDAAgC;AAEhC,MAA8B,WAAW;IAMrC,YAAY,OAAqB;QAE7B,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;IAE5B,CAAC;IAEM,cAAc;QAEjB,IAAG,IAAI,CAAC,YAAY,IAAI,SAAS;YAC7B,OAAO,IAAI,CAAC,YAAY,CAAC;QAE7B,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;QAEvB,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE9B,KAAI,IAAI,IAAI,IAAI,KAAK,EACrB;YACI,IAAI,IAAY,CAAC,IAAI,CAAC,CAAC,WAAW,IAAI,iBAAO,EAC7C;gBACI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAE,IAAY,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;aACxD;SACJ;QAED,OAAO,IAAI,CAAC,YAAY,CAAC;IAC7B,CAAC;IAEM,QAAQ,CAAC,IAAuC;QAEnD,OAAO,IAAI,CAAC,cAAc,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;IACnE,CAAC;IAEM,UAAU,CAAI,IAAmC;QAEpD,KAAI,IAAI,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EACjC;YACI,IAAI,IAAI,GAAI,IAAY,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC;YAExC,IAAG,IAAI,IAAI,SAAS;gBAChB,SAAS;YACb,IAAG,IAAI,IAAI,IAAI;gBACX,OAAQ,IAAY,CAAC,IAAI,CAAc,CAAC;SAC/C;QAED,OAAO,SAAS,CAAA;IACpB,CAAC;IAEY,mBAAmB;;YAE5B,IAAI,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,YAAY,CAAC;YAEvD,IAAG,CAAC,CAAA,MAAM,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAA;gBACzC,MAAM,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;YAE/C,KAAI,IAAI,IAAI,IAAI,IAAI,CAAC,YAAY,EACjC;gBACI,MAAM,IAAI,CAAC,QAAQ,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC;aACrD;QAEL,CAAC;KAAA;CAEJ;AAlED,8BAkEC"}
@@ -0,0 +1,26 @@
1
+ import 'reflect-metadata';
2
+ import IDBManager from '../core/objects/interfaces/IDBManager';
3
+ import PGDBConnection from './PGDBConnection';
4
+ export default class PGDBManager implements IDBManager {
5
+ private _connection;
6
+ constructor(connection: PGDBConnection);
7
+ CheckDatabase(dababase: string): Promise<boolean>;
8
+ CreateDataBase(dababase: string): Promise<void>;
9
+ CheckTable(cTor: Function): Promise<boolean>;
10
+ CreateTable(cTor: Function): Promise<void>;
11
+ CheckColumn(cTor: Function, key: string): Promise<boolean>;
12
+ CreateColumn(cTor: Function, key: string): Promise<void>;
13
+ UpdateDatabaseForEntity(cTor: Function): Promise<void>;
14
+ ExecuteNonQuery(query: string): Promise<void>;
15
+ Execute(query: string): Promise<any>;
16
+ static Build(host: string, port: number, dababase: string, user: string, pass: string): PGDBManager;
17
+ private CreatePromisse;
18
+ /**
19
+ * @private
20
+ * @method
21
+ * @param {string} type the desing type of class property
22
+ * @returns {string} the postgres type correspondent
23
+ */
24
+ private CastToPostgreSQLType;
25
+ }
26
+ //# sourceMappingURL=PGDBManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PGDBManager.d.ts","sourceRoot":"","sources":["../../src/implementations/PGDBManager.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAI1B,OAAO,UAAU,MAAM,uCAAuC,CAAC;AAE/D,OAAO,cAAc,MAAM,kBAAkB,CAAC;AAO9C,MAAM,CAAC,OAAO,OAAO,WAAY,YAAW,UAAU;IAElD,OAAO,CAAC,WAAW,CAAmB;gBAEnB,UAAU,EAAG,cAAc;IAKvC,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAWjD,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAS/C,UAAU,CAAC,IAAI,EAAG,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC;IAa7C,WAAW,CAAC,IAAI,EAAG,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAY3C,WAAW,CAAC,IAAI,EAAG,QAAQ,EAAE,GAAG,EAAG,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAe5D,YAAY,CAAC,IAAI,EAAG,QAAQ,EAAE,GAAG,EAAG,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA+D1D,uBAAuB,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IA0BhD,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAW7C,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;WAWnC,KAAK,CAAC,IAAI,EAAG,MAAM,EAAE,IAAI,EAAG,MAAM,EAAE,QAAQ,EAAG,MAAM,EAAE,IAAI,EAAG,MAAM,EAAE,IAAI,EAAG,MAAM,GAAI,WAAW;IAKhH,OAAO,CAAC,cAAc;IAmBtB;;;;;OAKG;IACH,OAAO,CAAC,oBAAoB;CA0B/B"}
@@ -0,0 +1,178 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ require("reflect-metadata");
16
+ const TypeNotSuportedException_1 = __importDefault(require("../core/exceptions/TypeNotSuportedException"));
17
+ const Type_1 = __importDefault(require("../core/design/Type"));
18
+ const PGDBConnection_1 = __importDefault(require("./PGDBConnection"));
19
+ const SchemasDecorators_1 = __importDefault(require("../core/decorators/SchemasDecorators"));
20
+ const InvalidOperationException_1 = __importDefault(require("../core/exceptions/InvalidOperationException"));
21
+ const Index_1 = require("../Index");
22
+ const RelationType_1 = require("../core/enums/RelationType");
23
+ class PGDBManager {
24
+ constructor(connection) {
25
+ this._connection = connection;
26
+ }
27
+ CheckDatabase(dababase) {
28
+ return this.CreatePromisse(() => __awaiter(this, void 0, void 0, function* () {
29
+ yield this._connection.AsPostgres().Open();
30
+ let result = yield this._connection.Execute(`select * from pg_database where datname = '${dababase}'`);
31
+ return result.rows.length > 0;
32
+ }));
33
+ }
34
+ CreateDataBase(dababase) {
35
+ return this.CreatePromisse(() => __awaiter(this, void 0, void 0, function* () {
36
+ yield this._connection.AsPostgres().Open();
37
+ yield this._connection.Execute(`create database ${dababase} with owner ${this._connection.UserName};`);
38
+ }));
39
+ }
40
+ CheckTable(cTor) {
41
+ return this.CreatePromisse(() => __awaiter(this, void 0, void 0, function* () {
42
+ let table = Type_1.default.GetTableName(cTor);
43
+ yield this._connection.Open();
44
+ let result = yield this._connection.Execute(`select * from information_schema.tables where table_catalog = '${this._connection.DataBaseName}' and table_name = '${table}';`);
45
+ return result.rows.length > 0;
46
+ }));
47
+ }
48
+ CreateTable(cTor) {
49
+ return this.CreatePromisse(() => __awaiter(this, void 0, void 0, function* () {
50
+ let table = Type_1.default.GetTableName(cTor);
51
+ yield this._connection.Open();
52
+ yield this._connection.Execute(`create table if not exists "${table}"();`);
53
+ }));
54
+ }
55
+ CheckColumn(cTor, key) {
56
+ return this.CreatePromisse(() => __awaiter(this, void 0, void 0, function* () {
57
+ let table = Type_1.default.GetTableName(cTor);
58
+ let column = Type_1.default.GetColumnName(cTor, key);
59
+ yield this._connection.Open();
60
+ let result = yield this._connection.Execute(`select * from information_schema.columns where table_name = '${table}' and column_name = '${column}';`);
61
+ return result.rows.length > 0;
62
+ }));
63
+ }
64
+ CreateColumn(cTor, key) {
65
+ return this.CreatePromisse(() => __awaiter(this, void 0, void 0, function* () {
66
+ let table = Type_1.default.GetTableName(cTor);
67
+ let column = Type_1.default.GetColumnName(cTor, key);
68
+ let type = "";
69
+ try {
70
+ type = this.CastToPostgreSQLType(Type_1.default.GetDesingTimeTypeName(cTor, key));
71
+ }
72
+ catch (ex) {
73
+ let subType = Type_1.default.GetDesingType(cTor, key);
74
+ let relation = SchemasDecorators_1.default.GetRelationAttribute(cTor, key);
75
+ if (subType == undefined || subType == Array) {
76
+ if (relation)
77
+ subType = relation.TypeBuilder();
78
+ if (relation == undefined) {
79
+ throw new InvalidOperationException_1.default(`Can not determine the relation of porperty ${cTor.name}${key}`);
80
+ }
81
+ }
82
+ let relatedKey = SchemasDecorators_1.default.ExtractPrimaryKey(subType);
83
+ if (!relatedKey)
84
+ throw new InvalidOperationException_1.default(`Can not determine the primary key of ${cTor.name}`);
85
+ if ((relation === null || relation === void 0 ? void 0 : relation.Relation) == RelationType_1.RelationType.ONE_TO_MANY || (relation === null || relation === void 0 ? void 0 : relation.Relation) == RelationType_1.RelationType.MANY_TO_MANY) {
86
+ type = this.CastToPostgreSQLType(Type_1.default.AsArray(Type_1.default.GetDesingTimeTypeName(subType, relatedKey)));
87
+ }
88
+ else {
89
+ type = this.CastToPostgreSQLType(Type_1.default.GetDesingTimeTypeName(subType, relatedKey));
90
+ }
91
+ if (type == Index_1.DBTypes.SERIAL)
92
+ type = this.CastToPostgreSQLType(Index_1.DBTypes.LONG);
93
+ }
94
+ yield this._connection.Open();
95
+ yield this._connection.Execute(`alter table "${table}" add column "${column}" ${type};`);
96
+ if (SchemasDecorators_1.default.IsPrimaryKey(cTor, key)) {
97
+ yield this._connection.Execute(`alter table "${table}" add constraint ${table}_${column}_pk primary key (${column});`);
98
+ }
99
+ }));
100
+ }
101
+ UpdateDatabaseForEntity(cTor) {
102
+ return this.CreatePromisse(() => __awaiter(this, void 0, void 0, function* () {
103
+ let table_name = Type_1.default.GetTableName(cTor);
104
+ if (table_name == undefined)
105
+ throw new TypeNotSuportedException_1.default(`The type ${cTor.name} is not supported. Can not determine the table name of type`);
106
+ yield this._connection.Open();
107
+ if (!(yield this.CheckTable(cTor)))
108
+ yield this.CreateTable(cTor);
109
+ for (let column of Type_1.default.GetProperties(cTor)) {
110
+ if (!(yield this.CheckColumn(cTor, column))) {
111
+ yield this.CreateColumn(cTor, column);
112
+ }
113
+ }
114
+ }));
115
+ }
116
+ ExecuteNonQuery(query) {
117
+ return __awaiter(this, void 0, void 0, function* () {
118
+ return this.CreatePromisse(() => __awaiter(this, void 0, void 0, function* () {
119
+ yield this._connection.Open();
120
+ yield this._connection.Execute(query);
121
+ }));
122
+ });
123
+ }
124
+ Execute(query) {
125
+ return __awaiter(this, void 0, void 0, function* () {
126
+ return this.CreatePromisse(() => __awaiter(this, void 0, void 0, function* () {
127
+ yield this._connection.Open();
128
+ return yield this._connection.Execute(query);
129
+ }));
130
+ });
131
+ }
132
+ static Build(host, port, dababase, user, pass) {
133
+ return new PGDBManager(new PGDBConnection_1.default(host, port, dababase, user, pass));
134
+ }
135
+ CreatePromisse(func) {
136
+ return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {
137
+ try {
138
+ resolve(yield func());
139
+ }
140
+ catch (err) {
141
+ reject(err);
142
+ }
143
+ finally {
144
+ this._connection.Close();
145
+ }
146
+ }));
147
+ }
148
+ /**
149
+ * @private
150
+ * @method
151
+ * @param {string} type the desing type of class property
152
+ * @returns {string} the postgres type correspondent
153
+ */
154
+ CastToPostgreSQLType(type) {
155
+ switch (type.toLowerCase()) {
156
+ case "integer": return "integer";
157
+ case "number": return "bigint";
158
+ case "long": return "bigint";
159
+ case "text": return "text";
160
+ case "string": return "text";
161
+ case "date": return "date";
162
+ case "datetime": return "timestamp";
163
+ case "boolean": return "boolean";
164
+ case "serial": return "serial";
165
+ case "integer[]": return "integer[]";
166
+ case "number[]": return "bigint[]";
167
+ case "long[]": return "bigint[]";
168
+ case "text[]": return "text[]";
169
+ case "string[]": return "text[]";
170
+ case "date[]": return "date[]";
171
+ case "datetime[]": return "timestamp[]";
172
+ case "boolean[]": return "boolean[]";
173
+ default: throw new TypeNotSuportedException_1.default(`The type ${type} is not suported`);
174
+ }
175
+ }
176
+ }
177
+ exports.default = PGDBManager;
178
+ //# sourceMappingURL=PGDBManager.js.map