pogi 2.10.1 → 3.0.0-beta

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 (108) hide show
  1. package/.vscode/launch.json +47 -15
  2. package/CHANGELOG.md +20 -0
  3. package/docs/API/PgDb.md +25 -0
  4. package/docs/notification.md +19 -0
  5. package/jest.config.js +23 -0
  6. package/lib/bin/generateInterface.js +2 -2
  7. package/lib/bin/generateInterface.js.map +1 -1
  8. package/lib/index.js +1 -0
  9. package/lib/index.js.map +1 -1
  10. package/lib/pgConverters.d.ts +2 -0
  11. package/lib/pgConverters.js +27 -10
  12. package/lib/pgConverters.js.map +1 -1
  13. package/lib/pgDb.d.ts +15 -6
  14. package/lib/pgDb.js +263 -67
  15. package/lib/pgDb.js.map +1 -1
  16. package/lib/pgTable.js +7 -7
  17. package/lib/pgTable.js.map +1 -1
  18. package/lib/pgUtils.d.ts +3 -1
  19. package/lib/pgUtils.js +61 -23
  20. package/lib/pgUtils.js.map +1 -1
  21. package/lib/queryAble.d.ts +16 -1
  22. package/lib/queryAble.js +124 -56
  23. package/lib/queryAble.js.map +1 -1
  24. package/lib/src/bin/generateInterface.d.ts +1 -0
  25. package/lib/src/bin/generateInterface.js +53 -0
  26. package/lib/src/bin/generateInterface.js.map +1 -0
  27. package/lib/src/connectionOptions.d.ts +34 -0
  28. package/lib/src/connectionOptions.js +3 -0
  29. package/lib/src/connectionOptions.js.map +1 -0
  30. package/lib/src/index.d.ts +6 -0
  31. package/lib/src/index.js +12 -0
  32. package/lib/src/index.js.map +1 -0
  33. package/lib/src/pgConverters.d.ts +9 -0
  34. package/lib/src/pgConverters.js +71 -0
  35. package/lib/src/pgConverters.js.map +1 -0
  36. package/lib/src/pgConverters.test.d.ts +1 -0
  37. package/lib/src/pgConverters.test.js +13 -0
  38. package/lib/src/pgConverters.test.js.map +1 -0
  39. package/lib/src/pgDb.d.ts +79 -0
  40. package/lib/src/pgDb.js +764 -0
  41. package/lib/src/pgDb.js.map +1 -0
  42. package/lib/src/pgDb.test.d.ts +1 -0
  43. package/lib/src/pgDb.test.js +1126 -0
  44. package/lib/src/pgDb.test.js.map +1 -0
  45. package/lib/src/pgDbInterface.js +11 -0
  46. package/lib/src/pgDbInterface.js.map +1 -0
  47. package/lib/src/pgDbLogger.d.ts +5 -0
  48. package/lib/src/pgDbLogger.js +3 -0
  49. package/lib/src/pgDbLogger.js.map +1 -0
  50. package/lib/src/pgDbOperators.d.ts +113 -0
  51. package/lib/src/pgDbOperators.js +41 -0
  52. package/lib/src/pgDbOperators.js.map +1 -0
  53. package/lib/src/pgDbOperators.test.d.ts +1 -0
  54. package/lib/src/pgDbOperators.test.js +313 -0
  55. package/lib/src/pgDbOperators.test.js.map +1 -0
  56. package/lib/src/pgSchema.d.ts +17 -0
  57. package/lib/src/pgSchema.js +16 -0
  58. package/lib/src/pgSchema.js.map +1 -0
  59. package/lib/src/pgSchemaInterface.d.ts +12 -0
  60. package/lib/src/pgSchemaInterface.js +3 -0
  61. package/lib/src/pgSchemaInterface.js.map +1 -0
  62. package/lib/src/pgTable.d.ts +105 -0
  63. package/lib/src/pgTable.js +322 -0
  64. package/lib/src/pgTable.js.map +1 -0
  65. package/lib/src/pgTableInterface.d.ts +102 -0
  66. package/lib/src/pgTableInterface.js +4 -0
  67. package/lib/src/pgTableInterface.js.map +1 -0
  68. package/lib/src/pgUtils.d.ts +41 -0
  69. package/lib/src/pgUtils.js +282 -0
  70. package/lib/src/pgUtils.js.map +1 -0
  71. package/lib/src/queryAble.d.ts +40 -0
  72. package/lib/src/queryAble.js +338 -0
  73. package/lib/src/queryAble.js.map +1 -0
  74. package/lib/src/queryAbleInterface.d.ts +59 -0
  75. package/lib/src/queryAbleInterface.js +7 -0
  76. package/lib/src/queryAbleInterface.js.map +1 -0
  77. package/lib/src/queryWhere.d.ts +8 -0
  78. package/lib/src/queryWhere.js +245 -0
  79. package/lib/src/queryWhere.js.map +1 -0
  80. package/mkdocs.yml +1 -0
  81. package/package.json +23 -14
  82. package/src/bin/generateInterface.ts +2 -2
  83. package/src/connectionOptions.ts +46 -13
  84. package/src/index.d.ts +7 -0
  85. package/src/pgConverters.test.ts +10 -0
  86. package/src/pgConverters.ts +34 -22
  87. package/src/pgDb.test.ts +1324 -0
  88. package/src/pgDb.ts +321 -125
  89. package/src/pgDbInterface.ts +57 -0
  90. package/src/pgDbOperators.test.ts +478 -0
  91. package/src/pgDbOperators.ts +45 -22
  92. package/src/pgSchema.ts +10 -9
  93. package/src/pgSchemaInterface.ts +12 -0
  94. package/src/pgTable.ts +65 -97
  95. package/src/pgTableInterface.ts +131 -0
  96. package/src/pgUtils.ts +156 -42
  97. package/src/queryAble.ts +167 -125
  98. package/src/queryAbleInterface.ts +108 -0
  99. package/src/queryWhere.ts +42 -43
  100. package/{spec/resources → src/test}/init.sql +23 -0
  101. package/src/test/pgServiceRestartTest.ts +1500 -0
  102. package/{spec/resources → src/test}/throw_exception.sql +0 -0
  103. package/{spec/resources → src/test}/tricky.sql +0 -0
  104. package/{src/tsconfig.json → tsconfig.json} +9 -6
  105. package/spec/run.js +0 -5
  106. package/spec/support/jasmine.json +0 -9
  107. package/src/test/pgDbOperatorSpec.ts +0 -492
  108. package/src/test/pgDbSpec.ts +0 -994
@@ -11,25 +11,57 @@
11
11
  "cwd": "${workspaceFolder}",
12
12
  "runtimeExecutable": "npm",
13
13
  "runtimeArgs": [
14
- "run-script", "test_debug"
14
+ "run-script",
15
+ "test_debug"
15
16
  ],
16
17
  "port": 9229
17
18
  },
18
19
  {
19
- "name": "Run test",
20
- "type": "node",
21
- "request": "launch",
22
- "cwd": "${workspaceFolder}",
23
- "program": "${workspaceFolder}/spec/run.js",
24
- "runtimeExecutable": "node",
20
+ "name": "Run test",
21
+ "type": "node",
22
+ "request": "launch",
23
+ "cwd": "${workspaceFolder}",
24
+ "program": "${workspaceFolder}/node_modules/jest/bin/jest",
25
+ "args": [
26
+ "--runInBand",
27
+ "--config",
28
+ "jest.config.js",
29
+ "--runTestsByPath",
30
+ "${relativeFile}",
31
+ ],
32
+ "console": "integratedTerminal",
33
+ "internalConsoleOptions": "neverOpen",
34
+ "disableOptimisticBPs": true,
35
+ "skipFiles": [
36
+ "fs.js",
37
+ "typescript.js",
38
+ "tslib.js",
39
+ "loader.js",
40
+ "loaders.js",
41
+ "helpers.js",
42
+ ]
43
+ },
44
+ {
45
+ "type": "node",
46
+ "name": "vscode-jest-tests",
47
+ "request": "launch",
48
+ "program": "${workspaceFolder}/node_modules/jest/bin/jest",
49
+ "args": [
50
+ "--runInBand"
51
+ ],
52
+ "cwd": "${workspaceFolder}",
53
+ "envFile": "${workspaceFolder}/.env",
54
+ "console": "integratedTerminal",
55
+ "internalConsoleOptions": "neverOpen",
56
+ "disableOptimisticBPs": true,
57
+ "outFiles": [
58
+ "${workspaceFolder}/lib/*.js",
59
+ "!${workspaceFolder}/node_modules/**/*",
60
+ ],
25
61
  "skipFiles": [
26
- "fs.js",
27
- "typescript.js",
28
- "tslib.js",
29
- "loader.js",
30
- "loaders.js",
31
- "helpers.js",
32
- ]
33
- }
62
+ "${workspaceFolder}/node_modules/**/*.js",
63
+ "<node_internals>/**/*.js"
64
+ ],
65
+ }
34
66
  ]
35
67
  }
package/CHANGELOG.md CHANGED
@@ -1,3 +1,23 @@
1
+ # [2.11.0](https://github.com/holdfenytolvaj/pogi/compare/v2.10.0...v2.11.0) (2021-09-16)
2
+
3
+ ### Features
4
+
5
+ - documentation on postgres-notifications
6
+ ([427119b](https://github.com/holdfenytolvaj/pogi/commit/427119baa3ffd8a19dc5ba5084e08ab7e2a4c395))
7
+ - automatic restart upon disconnected connection ([2bc777a](https://github.com/holdfenytolvaj/pogi/commit/2bc777ace4b88c2890b80e4090f3733137b89ef5))
8
+ - automatic recognition of changed enum ([5af7146](https://github.com/holdfenytolvaj/pogi/commit/5af7146d727f0344e3411a2f9df1f02afbf998b2),[bfaedd5](https://github.com/holdfenytolvaj/pogi/commit/bfaedd5a10810623d27be010e338abe324155494))
9
+
10
+ ### Bug Fixes
11
+
12
+ ## [2.10.2](https://github.com/holdfenytolvaj/pogi/compare/v2.10.0...v2.10.2) (2021-01-29)
13
+
14
+
15
+ ### Bug Fixes
16
+
17
+ * Null pointer exception ([289e6f4](https://github.com/holdfenytolvaj/pogi/commit/289e6f4))
18
+
19
+
20
+
1
21
  ## [2.10.1](https://github.com/holdfenytolvaj/pogi/compare/v2.10.0...v2.10.1) (2021-01-29)
2
22
 
3
23
 
package/docs/API/PgDb.md CHANGED
@@ -191,3 +191,28 @@ For example see the [transaction](/transaction) section.
191
191
  If the PgDb instance has dedicated connection mode and has transaction it will rolls back, otherwise do nothing.
192
192
  Returns with PgDb instance (with pool connections mode) where no transaction is taking place.
193
193
  For example see the [transaction](/transaction) section.
194
+
195
+ ---
196
+ ## listen
197
+ <span class="def"><span class="func">listen</span>(channel:<span class="type">string</span>, callback:<span class="type">(Notification)=&gt;void)</span>;</>
198
+
199
+ Creates a new dedicated connection for listeners (if it doesn't exists), and sets a callback for the channel.
200
+ It is possible to set multiple callbacks for one channel.
201
+ If there will be a notification from the database, the callback will be executed.
202
+ For example see the [notification](/notification) section.
203
+
204
+ ---
205
+ ## unlisten
206
+ <span class="def"><span class="func">unlisten</span>(channel:<span class="type">string</span>, callback?:<span class="type">(Notification)=&gt;void)</span>;</>
207
+
208
+ Removes a listener. If callback parameter is set, only the given callback will be removed.
209
+ If callback parameter is not set, all callbacks will be removed from the channel.
210
+ If it was the last channel, the dedicated connection for listeners will be released.
211
+ For example see the [notification](/notification) section.
212
+
213
+ ---
214
+ ## notify
215
+ <span class="def"><span class="func">notify</span>(channel:<span class="type">string</span>, payload?:<span class="type">string</span>;</>
216
+
217
+ Send a notification via postgresql.
218
+ For example see the [notification](/notification) section.
@@ -0,0 +1,19 @@
1
+ ## Notification
2
+ as simple as:
3
+ ```js
4
+ let result = '';
5
+ await db.listen('channel', (data) => { result += data.payload; });
6
+ await db.listen('channel', () => { result += ',nextCallback'; });
7
+
8
+ await db.run(`NOTIFY channel, 'data'`);
9
+ //same as: await db.notify('channel', 'data');
10
+ //result will be: 'data,nextCallback'
11
+
12
+ await db.unlisten('channel');
13
+ //dedicated listener connection now released.
14
+ ```
15
+
16
+ See [Postgresql documentation](https://www.postgresql.org/docs/current/sql-notify.html)
17
+
18
+ ## Some comments
19
+ Notification listeners uses a dedicated connection. If e.g. the postgresql server restarts, some notifications might not be received, but the connection and the listeners will be re-created.
package/jest.config.js ADDED
@@ -0,0 +1,23 @@
1
+ // For a detailed explanation regarding each configuration property, visit:
2
+ // https://jestjs.io/docs/en/configuration.html
3
+
4
+ module.exports = {
5
+ roots: ["./src"],
6
+ testMatch: [
7
+ "**/*.test.ts"
8
+ ],
9
+ testPathIgnorePatterns: ["/dist/", "/build/"],
10
+
11
+ // A preset that is used as a base for Jest's configuration
12
+ preset: "ts-jest",
13
+ testEnvironment: "node",
14
+ testRunner: "jest-jasmine2",
15
+
16
+ globals: {
17
+ "ts-jest": {
18
+ tsconfig: "tsconfig.json",
19
+ isolatedModules: true
20
+ }
21
+ },
22
+ setupFiles: ['dotenv/config']
23
+ };
@@ -17,7 +17,7 @@ const pgTable_1 = require("../pgTable");
17
17
  console.log('export interface PgDbType extends PgDb {');
18
18
  for (let schemaName in pgdb.schemas) {
19
19
  if (!(pgdb[schemaName] instanceof pgSchema_1.PgSchema)) {
20
- throw Error('Already existing property: ' + schemaName + '!');
20
+ throw new Error('Already existing property: ' + schemaName + '!');
21
21
  }
22
22
  console.log(` '${schemaName}': PgSchema_${schemaName};`);
23
23
  }
@@ -31,7 +31,7 @@ const pgTable_1 = require("../pgTable");
31
31
  console.log(`export interface PgSchema_${schemaName} extends PgSchema {`);
32
32
  for (let tableName in pgdb.schemas[schemaName].tables) {
33
33
  if (!(pgdb[schemaName][tableName] instanceof pgTable_1.PgTable)) {
34
- throw Error('Already existing property: ' + tableName + ' on schema:' + schemaName + '!');
34
+ throw new Error('Already existing property: ' + tableName + ' on schema:' + schemaName + '!');
35
35
  }
36
36
  console.log(` '${tableName}': PgTable<any>;`);
37
37
  }
@@ -1 +1 @@
1
- {"version":3,"file":"generateInterface.js","sourceRoot":"","sources":["../../src/bin/generateInterface.ts"],"names":[],"mappings":";;;AAAA,kCAA6B;AAC7B,0CAAqC;AACrC,wCAAmC;AAEnC,CAAC;;QACG,IAAI;YACA,IAAI,IAAI,GAAG,MAAM,WAAI,CAAC,OAAO,CAAC;gBAC1B,MAAM,EAAE;oBACJ,GAAG,EAAE,GAAG,EAAE;oBACV,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK;iBAC1B;aACJ,CAAC,CAAC;YAEH,OAAO,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAC;YAC/D,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;YAExD,KAAK,IAAI,UAAU,IAAI,IAAI,CAAC,OAAO,EAAE;gBACjC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,mBAAQ,CAAC,EAAE;oBACzC,MAAM,KAAK,CAAC,6BAA6B,GAAG,UAAU,GAAG,GAAG,CAAC,CAAC;iBACjE;gBACD,OAAO,CAAC,GAAG,CAAC,QAAQ,UAAU,eAAe,UAAU,GAAG,CAAC,CAAC;aAC/D;YAED,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;YAChC,KAAK,IAAI,UAAU,IAAI,IAAI,CAAC,OAAO,EAAE;gBACjC,OAAO,CAAC,GAAG,CAAC,YAAY,UAAU,eAAe,UAAU,GAAG,CAAC,CAAC;aACnE;YACD,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACrB,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAEjB,KAAK,IAAI,UAAU,IAAI,IAAI,CAAC,OAAO,EAAE;gBACjC,OAAO,CAAC,GAAG,CAAC,6BAA6B,UAAU,qBAAqB,CAAC,CAAC;gBAC1E,KAAK,IAAI,SAAS,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,MAAM,EAAE;oBACnD,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,YAAY,iBAAO,CAAC,EAAE;wBACnD,MAAM,KAAK,CAAC,6BAA6B,GAAG,SAAS,GAAG,aAAa,GAAG,UAAU,GAAG,GAAG,CAAC,CAAC;qBAC7F;oBACD,OAAO,CAAC,GAAG,CAAC,QAAQ,SAAS,kBAAkB,CAAC,CAAC;iBACpD;gBACD,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;gBAC7B,KAAK,IAAI,SAAS,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,MAAM,EAAE;oBACnD,OAAO,CAAC,GAAG,CAAC,YAAY,SAAS,kBAAkB,CAAC,CAAC;iBACxD;gBACD,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBAErB,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;aACpB;YAGD,IAAI,CAAC,KAAK,EAAE,CAAC;SAChB;QAAC,OAAO,CAAC,EAAE;YACR,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;SACpB;QACD,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;CAAA,CAAC,EAAE,CAAC"}
1
+ {"version":3,"file":"generateInterface.js","sourceRoot":"","sources":["../../src/bin/generateInterface.ts"],"names":[],"mappings":";;;AAAA,kCAA6B;AAC7B,0CAAqC;AACrC,wCAAmC;AAEnC,CAAC;;QACG,IAAI;YACA,IAAI,IAAI,GAAG,MAAM,WAAI,CAAC,OAAO,CAAC;gBAC1B,MAAM,EAAE;oBACJ,GAAG,EAAE,GAAG,EAAE;oBACV,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK;iBAC1B;aACJ,CAAC,CAAC;YAEH,OAAO,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAC;YAC/D,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;YAExD,KAAK,IAAI,UAAU,IAAI,IAAI,CAAC,OAAO,EAAE;gBACjC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,mBAAQ,CAAC,EAAE;oBACzC,MAAM,IAAI,KAAK,CAAC,6BAA6B,GAAG,UAAU,GAAG,GAAG,CAAC,CAAC;iBACrE;gBACD,OAAO,CAAC,GAAG,CAAC,QAAQ,UAAU,eAAe,UAAU,GAAG,CAAC,CAAC;aAC/D;YAED,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;YAChC,KAAK,IAAI,UAAU,IAAI,IAAI,CAAC,OAAO,EAAE;gBACjC,OAAO,CAAC,GAAG,CAAC,YAAY,UAAU,eAAe,UAAU,GAAG,CAAC,CAAC;aACnE;YACD,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACrB,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAEjB,KAAK,IAAI,UAAU,IAAI,IAAI,CAAC,OAAO,EAAE;gBACjC,OAAO,CAAC,GAAG,CAAC,6BAA6B,UAAU,qBAAqB,CAAC,CAAC;gBAC1E,KAAK,IAAI,SAAS,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,MAAM,EAAE;oBACnD,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,YAAY,iBAAO,CAAC,EAAE;wBACnD,MAAM,IAAI,KAAK,CAAC,6BAA6B,GAAG,SAAS,GAAG,aAAa,GAAG,UAAU,GAAG,GAAG,CAAC,CAAC;qBACjG;oBACD,OAAO,CAAC,GAAG,CAAC,QAAQ,SAAS,kBAAkB,CAAC,CAAC;iBACpD;gBACD,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;gBAC7B,KAAK,IAAI,SAAS,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,MAAM,EAAE;oBACnD,OAAO,CAAC,GAAG,CAAC,YAAY,SAAS,kBAAkB,CAAC,CAAC;iBACxD;gBACD,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBAErB,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;aACpB;YAGD,IAAI,CAAC,KAAK,EAAE,CAAC;SAChB;QAAC,OAAO,CAAC,EAAE;YACR,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;SACpB;QACD,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;CAAA,CAAC,EAAE,CAAC"}
package/lib/index.js CHANGED
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PgSchema = exports.PgTable = exports.PgDb = void 0;
3
4
  var pgDb_1 = require("./pgDb");
4
5
  Object.defineProperty(exports, "PgDb", { enumerable: true, get: function () { return pgDb_1.PgDb; } });
5
6
  var pgTable_1 = require("./pgTable");
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;AAAA,+BAA8B;AAArB,4FAAA,IAAI,OAAA;AAGb,qCAAoC;AAA3B,kGAAA,OAAO,OAAA;AAChB,uCAAsC;AAA7B,oGAAA,QAAQ,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,+BAA8B;AAArB,4FAAA,IAAI,OAAA;AAGb,qCAAoC;AAA3B,kGAAA,OAAO,OAAA;AAChB,uCAAsC;AAA7B,oGAAA,QAAQ,OAAA"}
@@ -1,6 +1,8 @@
1
1
  export declare let arraySplit: (str: any) => any[];
2
2
  export declare let numWithValidation: (val: any) => number;
3
3
  export declare let numberOrNull: (val: any) => number;
4
+ export declare let boolOrNull: (val: any) => boolean;
5
+ export declare let arraySplitToBool: (val: any) => any;
4
6
  export declare let arraySplitToNum: (val: any) => any;
5
7
  export declare let arraySplitToNumWithValidation: (val: any) => any;
6
8
  export declare let stringArrayToNumWithValidation: (val: any) => any;
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.arraySplitToJson = exports.arraySplitToDate = exports.stringArrayToNumWithValidation = exports.arraySplitToNumWithValidation = exports.arraySplitToNum = exports.numberOrNull = exports.numWithValidation = exports.arraySplit = void 0;
3
+ exports.arraySplitToJson = exports.arraySplitToDate = exports.stringArrayToNumWithValidation = exports.arraySplitToNumWithValidation = exports.arraySplitToNum = exports.arraySplitToBool = exports.boolOrNull = exports.numberOrNull = exports.numWithValidation = exports.arraySplit = void 0;
4
4
  const moment = require("moment");
5
- exports.arraySplit = (str) => {
5
+ let arraySplit = (str) => {
6
6
  if (str == "{}")
7
7
  return [];
8
8
  str = str.substring(1, str.length - 1);
@@ -17,30 +17,47 @@ exports.arraySplit = (str) => {
17
17
  } while (e.lastIndex < str.length);
18
18
  return valList;
19
19
  };
20
- exports.numWithValidation = val => {
20
+ exports.arraySplit = arraySplit;
21
+ let numWithValidation = val => {
21
22
  if (val === 'NULL') {
22
23
  return null;
23
24
  }
24
25
  let v = +val;
25
26
  if (v > Number.MAX_SAFE_INTEGER || v < Number.MIN_SAFE_INTEGER) {
26
- throw Error("Number can't be represented in javascript precisely: " + val);
27
+ throw new Error("Number can't be represented in javascript precisely: " + val);
27
28
  }
28
29
  return v;
29
30
  };
30
- exports.numberOrNull = val => {
31
+ exports.numWithValidation = numWithValidation;
32
+ let numberOrNull = val => {
31
33
  if (val === 'NULL') {
32
34
  return null;
33
35
  }
34
36
  return +val;
35
37
  };
36
- exports.arraySplitToNum = val => val == "{}" ? [] : val.substring(1, val.length - 1).split(',').map(exports.numberOrNull);
37
- exports.arraySplitToNumWithValidation = val => val == "{}" ? [] : val.substring(1, val.length - 1).split(',').map(exports.numWithValidation);
38
- exports.stringArrayToNumWithValidation = val => val.map(exports.numWithValidation);
39
- exports.arraySplitToDate = val => val == "{}" ? [] : val.substring(1, val.length - 1).split(',').map(d => d == 'NULL' ? null : moment(d.substring(1, d.length - 1)).toDate());
40
- exports.arraySplitToJson = (str) => {
38
+ exports.numberOrNull = numberOrNull;
39
+ let boolOrNull = val => {
40
+ if (val === 'NULL') {
41
+ return null;
42
+ }
43
+ return val == 't';
44
+ };
45
+ exports.boolOrNull = boolOrNull;
46
+ let arraySplitToBool = val => val == "{}" ? [] : val.substring(1, val.length - 1).split(',').map(exports.boolOrNull);
47
+ exports.arraySplitToBool = arraySplitToBool;
48
+ let arraySplitToNum = val => val == "{}" ? [] : val.substring(1, val.length - 1).split(',').map(exports.numberOrNull);
49
+ exports.arraySplitToNum = arraySplitToNum;
50
+ let arraySplitToNumWithValidation = val => val == "{}" ? [] : val.substring(1, val.length - 1).split(',').map(exports.numWithValidation);
51
+ exports.arraySplitToNumWithValidation = arraySplitToNumWithValidation;
52
+ let stringArrayToNumWithValidation = val => val.map(exports.numWithValidation);
53
+ exports.stringArrayToNumWithValidation = stringArrayToNumWithValidation;
54
+ let arraySplitToDate = val => val == "{}" ? [] : val.substring(1, val.length - 1).split(',').map(d => d == 'NULL' ? null : moment(d.substring(1, d.length - 1)).toDate());
55
+ exports.arraySplitToDate = arraySplitToDate;
56
+ let arraySplitToJson = (str) => {
41
57
  let vals = exports.arraySplit(str);
42
58
  return vals.map(s => typeof s === 'string' ? JSON.parse(s) : s);
43
59
  };
60
+ exports.arraySplitToJson = arraySplitToJson;
44
61
  function unescapeString(s) {
45
62
  return s.slice(1, s.length - 1)
46
63
  .replace(/\\"/g, '"')
@@ -1 +1 @@
1
- {"version":3,"file":"pgConverters.js","sourceRoot":"","sources":["../src/pgConverters.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pgConverters.js","sourceRoot":"","sources":["../src/pgConverters.ts"],"names":[],"mappings":"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"}
package/lib/pgDb.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { QueryAble, ResultFieldType } from "./queryAble";
1
+ import { QueryAble, ResultFieldType, IPgDb, PostProcessResultFunc } from "./queryAble";
2
2
  import { PgTable } from "./pgTable";
3
3
  import { PgSchema } from "./pgSchema";
4
4
  import { PgDbLogger } from './pgDbLogger';
@@ -15,22 +15,20 @@ export declare enum TranzactionIsolationLevel {
15
15
  readCommitted = "READ COMMITTED",
16
16
  readUncommitted = "READ UNCOMMITTED"
17
17
  }
18
- export declare type PostProcessResultFunc = (res: any[], fields: ResultFieldType[], logger: PgDbLogger) => void;
19
18
  export interface Notification {
20
19
  processId: number;
21
20
  channel: string;
22
21
  payload?: string;
23
22
  }
24
- export declare class PgDb extends QueryAble {
23
+ export declare class PgDb extends QueryAble implements IPgDb {
25
24
  protected static instances: {
26
25
  [index: string]: Promise<PgDb>;
27
26
  };
28
27
  pool: any;
29
28
  connection: any;
30
- protected connectionForListen: any;
31
29
  config: ConnectionOptions;
32
30
  defaultSchemas: any;
33
- db: any;
31
+ db: PgDb;
34
32
  schemas: {
35
33
  [name: string]: PgSchema;
36
34
  };
@@ -41,7 +39,8 @@ export declare class PgDb extends QueryAble {
41
39
  [name: string]: (...any: any[]) => any;
42
40
  };
43
41
  [name: string]: any | PgSchema;
44
- pgdbTypeParsers: {};
42
+ pgdbTypeParsers: Record<string, (string: any) => any>;
43
+ knownOids: Record<number, boolean>;
45
44
  postProcessResult: PostProcessResultFunc;
46
45
  private constructor();
47
46
  setPostProcessResult(f: (res: any[], fields: ResultFieldType[], logger: PgDbLogger) => void): void;
@@ -55,6 +54,7 @@ export declare class PgDb extends QueryAble {
55
54
  private initFieldTypes;
56
55
  setTypeParser(typeName: string, parser: (string: any) => any, schemaName?: string): Promise<void>;
57
56
  setPgDbTypeParser(typeName: string, parser: (string: any) => any, schemaName?: string): Promise<void>;
57
+ resetMissingParsers(connection: any, oidList: number[]): Promise<void>;
58
58
  dedicatedConnectionBegin(): Promise<PgDb>;
59
59
  dedicatedConnectionEnd(): Promise<PgDb>;
60
60
  savePoint(name: string): Promise<PgDb>;
@@ -71,8 +71,17 @@ export declare class PgDb extends QueryAble {
71
71
  isTransactionActive(): boolean;
72
72
  execute(fileName: string, statementTransformerFunction?: (string: any) => string): Promise<void>;
73
73
  private listeners;
74
+ private connectionForListen;
75
+ private _needToRestartConnectionForListen;
76
+ private restartConnectionForListen;
74
77
  listen(channel: string, callback: (notification: Notification) => void): Promise<void>;
75
78
  unlisten(channel: string, callback?: (Notification: any) => void): Promise<void>;
76
79
  notify(channel: string, payload?: string): Promise<any[]>;
80
+ runRestartConnectionForListen(): Promise<Error>;
81
+ needToFixConnectionForListen(): boolean;
82
+ private tryToFixConnectionForListenActively;
83
+ notificationListener: (notification: Notification) => boolean;
84
+ errorListener: (e: any) => void;
85
+ private initConnectionForListen;
77
86
  }
78
87
  export default PgDb;