pogi 2.11.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/.vscode/launch.json +35 -0
  2. package/CHANGELOG.md +277 -0
  3. package/LICENSE +21 -0
  4. package/README.md +85 -0
  5. package/docs/API/PgDb.md +218 -0
  6. package/docs/API/PgSchema.md +91 -0
  7. package/docs/API/PgTable.md +365 -0
  8. package/docs/API/QueryOptions.md +77 -0
  9. package/docs/API/condition.md +133 -0
  10. package/docs/connection.md +91 -0
  11. package/docs/css/docs.css +164 -0
  12. package/docs/executingSqlFile.md +44 -0
  13. package/docs/faq.md +15 -0
  14. package/docs/functions.md +19 -0
  15. package/docs/generatingInterfaceForTables.md +35 -0
  16. package/docs/index.md +48 -0
  17. package/docs/logger.md +40 -0
  18. package/docs/mappingDatabaseTypes.md +89 -0
  19. package/docs/notification.md +19 -0
  20. package/docs/pitfalls.md +73 -0
  21. package/docs/streams.md +68 -0
  22. package/docs/transaction.md +65 -0
  23. package/lib/bin/generateInterface.d.ts +1 -0
  24. package/lib/bin/generateInterface.js +53 -0
  25. package/lib/bin/generateInterface.js.map +1 -0
  26. package/lib/connectionOptions.d.ts +25 -0
  27. package/lib/connectionOptions.js +3 -0
  28. package/lib/connectionOptions.js.map +1 -0
  29. package/lib/index.d.ts +6 -0
  30. package/lib/index.js +10 -0
  31. package/lib/index.js.map +1 -0
  32. package/lib/pgConverters.d.ts +10 -0
  33. package/lib/pgConverters.js +66 -0
  34. package/lib/pgConverters.js.map +1 -0
  35. package/lib/pgDb.d.ts +86 -0
  36. package/lib/pgDb.js +745 -0
  37. package/lib/pgDb.js.map +1 -0
  38. package/lib/pgDbLogger.d.ts +5 -0
  39. package/lib/pgDbLogger.js +3 -0
  40. package/lib/pgDbLogger.js.map +1 -0
  41. package/lib/pgDbOperators.d.ts +113 -0
  42. package/lib/pgDbOperators.js +44 -0
  43. package/lib/pgDbOperators.js.map +1 -0
  44. package/lib/pgSchema.d.ts +16 -0
  45. package/lib/pgSchema.js +16 -0
  46. package/lib/pgSchema.js.map +1 -0
  47. package/lib/pgTable.d.ts +131 -0
  48. package/lib/pgTable.js +322 -0
  49. package/lib/pgTable.js.map +1 -0
  50. package/lib/pgUtils.d.ts +31 -0
  51. package/lib/pgUtils.js +157 -0
  52. package/lib/pgUtils.js.map +1 -0
  53. package/lib/queryAble.d.ts +76 -0
  54. package/lib/queryAble.js +330 -0
  55. package/lib/queryAble.js.map +1 -0
  56. package/lib/queryWhere.d.ts +8 -0
  57. package/lib/queryWhere.js +249 -0
  58. package/lib/queryWhere.js.map +1 -0
  59. package/mkdocs.yml +25 -0
  60. package/package.json +65 -0
  61. package/spec/resources/init.sql +122 -0
  62. package/spec/resources/throw_exception.sql +5 -0
  63. package/spec/resources/tricky.sql +13 -0
  64. package/spec/run.js +5 -0
  65. package/spec/support/jasmine.json +9 -0
  66. package/src/bin/generateInterface.ts +54 -0
  67. package/src/connectionOptions.ts +42 -0
  68. package/src/index.ts +6 -0
  69. package/src/pgConverters.ts +55 -0
  70. package/src/pgDb.ts +820 -0
  71. package/src/pgDbLogger.ts +13 -0
  72. package/src/pgDbOperators.ts +62 -0
  73. package/src/pgSchema.ts +15 -0
  74. package/src/pgTable.ts +401 -0
  75. package/src/pgUtils.ts +176 -0
  76. package/src/queryAble.ts +393 -0
  77. package/src/queryWhere.ts +326 -0
  78. package/src/test/pgDbOperatorSpec.ts +492 -0
  79. package/src/test/pgDbSpec.ts +1339 -0
  80. package/src/test/pgServiceRestartTest.ts +1500 -0
  81. package/src/tsconfig.json +33 -0
  82. package/utils_sql/lower.sql +4 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pgDb.js","sourceRoot":"","sources":["../src/pgDb.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export interface PgDbLogger {
2
+ log: Function;
3
+ error: Function;
4
+ paramSanitizer?: Function;
5
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=pgDbLogger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pgDbLogger.js","sourceRoot":"","sources":["../src/pgDbLogger.ts"],"names":[],"mappings":""}
@@ -0,0 +1,113 @@
1
+ declare const _default: {
2
+ '=*': {
3
+ operator: string;
4
+ mutator: (s: string) => string;
5
+ fieldMutator: (s: any) => any;
6
+ };
7
+ icontains: {
8
+ operator: string;
9
+ mutator: (s: any) => string;
10
+ };
11
+ '=': {
12
+ operator: string;
13
+ };
14
+ '!': {
15
+ operator: string;
16
+ };
17
+ '>': {
18
+ operator: string;
19
+ };
20
+ '<': {
21
+ operator: string;
22
+ };
23
+ '>=': {
24
+ operator: string;
25
+ };
26
+ '<=': {
27
+ operator: string;
28
+ };
29
+ '!=': {
30
+ operator: string;
31
+ };
32
+ '<>': {
33
+ operator: string;
34
+ };
35
+ 'is not': {
36
+ operator: string;
37
+ };
38
+ '@@': {
39
+ operator: string;
40
+ };
41
+ '@>': {
42
+ operator: string;
43
+ };
44
+ '<@': {
45
+ operator: string;
46
+ };
47
+ '&&': {
48
+ operator: string;
49
+ };
50
+ '&&*': {
51
+ operator: string;
52
+ mutator: (s: string) => string;
53
+ fieldMutator: (f: any) => any;
54
+ };
55
+ '?': {
56
+ operator: string;
57
+ };
58
+ '?|': {
59
+ operator: string;
60
+ };
61
+ '?&': {
62
+ operator: string;
63
+ };
64
+ '~~': {
65
+ operator: string;
66
+ };
67
+ like: {
68
+ operator: string;
69
+ };
70
+ '!~~': {
71
+ operator: string;
72
+ };
73
+ 'not like': {
74
+ operator: string;
75
+ };
76
+ '~~*': {
77
+ operator: string;
78
+ };
79
+ ilike: {
80
+ operator: string;
81
+ };
82
+ '!~~*': {
83
+ operator: string;
84
+ };
85
+ 'not ilike': {
86
+ operator: string;
87
+ };
88
+ 'similar to': {
89
+ operator: string;
90
+ };
91
+ 'not similar to': {
92
+ operator: string;
93
+ };
94
+ '~': {
95
+ operator: string;
96
+ };
97
+ '!~': {
98
+ operator: string;
99
+ };
100
+ '~*': {
101
+ operator: string;
102
+ };
103
+ '!~*': {
104
+ operator: string;
105
+ };
106
+ 'is distinct from': {
107
+ operator: string;
108
+ };
109
+ 'is not distinct from': {
110
+ operator: string;
111
+ };
112
+ };
113
+ export default _default;
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const util = require("util");
4
+ function escapeForLike(s) {
5
+ return s.replace(/([\\%_])/g, '\\$1');
6
+ }
7
+ exports.default = {
8
+ '=*': { operator: '=', mutator: (s) => s.toLocaleLowerCase(), fieldMutator: s => util.format('LOWER("%s")', s) },
9
+ 'icontains': { operator: 'ILIKE', mutator: s => '%' + escapeForLike(s) + '%' },
10
+ '=': { operator: '=' },
11
+ '!': { operator: '<>' },
12
+ '>': { operator: '>' },
13
+ '<': { operator: '<' },
14
+ '>=': { operator: '>=' },
15
+ '<=': { operator: '<=' },
16
+ '!=': { operator: '<>' },
17
+ '<>': { operator: '<>' },
18
+ 'is not': { operator: 'IS NOT' },
19
+ '@@': { operator: '@@' },
20
+ '@>': { operator: '@>' },
21
+ '<@': { operator: '<@' },
22
+ '&&': { operator: '&&' },
23
+ '&&*': { operator: '&&', mutator: (s) => s.toLocaleLowerCase(), fieldMutator: f => util.format('LOWER("%s")', f) },
24
+ '?': { operator: '?' },
25
+ '?|': { operator: '?|' },
26
+ '?&': { operator: '?&' },
27
+ '~~': { operator: 'LIKE' },
28
+ 'like': { operator: 'LIKE' },
29
+ '!~~': { operator: 'NOT LIKE' },
30
+ 'not like': { operator: 'NOT LIKE' },
31
+ '~~*': { operator: 'ILIKE' },
32
+ 'ilike': { operator: 'ILIKE' },
33
+ '!~~*': { operator: 'NOT ILIKE' },
34
+ 'not ilike': { operator: 'NOT ILIKE' },
35
+ 'similar to': { operator: 'SIMILAR TO' },
36
+ 'not similar to': { operator: 'NOT SIMILAR TO' },
37
+ '~': { operator: '~' },
38
+ '!~': { operator: '!~' },
39
+ '~*': { operator: '~*' },
40
+ '!~*': { operator: '!~*' },
41
+ 'is distinct from': { operator: 'IS DISTINCT FROM' },
42
+ 'is not distinct from': { operator: 'IS NOT DISTINCT FROM' }
43
+ };
44
+ //# sourceMappingURL=pgDbOperators.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pgDbOperators.js","sourceRoot":"","sources":["../src/pgDbOperators.ts"],"names":[],"mappings":";;AAAA,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;AAE7B,SAAS,aAAa,CAAC,CAAC;IACpB,OAAO,CAAC,CAAC,OAAO,CAAC,WAAW,EAAC,MAAM,CAAC,CAAC;AACzC,CAAC;AAED,kBAAe;IAEX,IAAI,EAAE,EAAC,QAAQ,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,CAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,iBAAiB,EAAE,EAAE,YAAY,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,EAAC,CAAC,CAAC,EAAC;IAGpH,WAAW,EAAE,EAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,aAAa,CAAC,CAAC,CAAC,GAAG,GAAG,EAAC;IAM5E,GAAG,EAAE,EAAC,QAAQ,EAAE,GAAG,EAAC;IACpB,GAAG,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC;IACrB,GAAG,EAAE,EAAC,QAAQ,EAAE,GAAG,EAAC;IACpB,GAAG,EAAE,EAAC,QAAQ,EAAE,GAAG,EAAC;IACpB,IAAI,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC;IACtB,IAAI,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC;IACtB,IAAI,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC;IACtB,IAAI,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC;IACtB,QAAQ,EAAE,EAAC,QAAQ,EAAE,QAAQ,EAAC;IAG9B,IAAI,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC;IAGtB,IAAI,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC;IACtB,IAAI,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC;IACtB,IAAI,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC;IACtB,KAAK,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAG,OAAO,EAAE,CAAC,CAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,iBAAiB,EAAE,EAAE,YAAY,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC,EAAC;IAGxH,GAAG,EAAE,EAAC,QAAQ,EAAE,GAAG,EAAC;IACpB,IAAI,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC;IACtB,IAAI,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC;IAItB,IAAI,EAAE,EAAC,QAAQ,EAAE,MAAM,EAAC;IACxB,MAAM,EAAE,EAAC,QAAQ,EAAE,MAAM,EAAC;IAC1B,KAAK,EAAE,EAAC,QAAQ,EAAE,UAAU,EAAC;IAC7B,UAAU,EAAE,EAAC,QAAQ,EAAE,UAAU,EAAC;IAClC,KAAK,EAAE,EAAC,QAAQ,EAAE,OAAO,EAAC;IAC1B,OAAO,EAAE,EAAC,QAAQ,EAAE,OAAO,EAAC;IAC5B,MAAM,EAAE,EAAC,QAAQ,EAAE,WAAW,EAAC;IAC/B,WAAW,EAAE,EAAC,QAAQ,EAAE,WAAW,EAAC;IACpC,YAAY,EAAE,EAAC,QAAQ,EAAE,YAAY,EAAC;IACtC,gBAAgB,EAAE,EAAC,QAAQ,EAAE,gBAAgB,EAAC;IAE9C,GAAG,EAAE,EAAC,QAAQ,EAAE,GAAG,EAAC;IACpB,IAAI,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC;IACtB,IAAI,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC;IACtB,KAAK,EAAE,EAAC,QAAQ,EAAE,KAAK,EAAC;IAExB,kBAAkB,EAAE,EAAC,QAAQ,EAAE,kBAAkB,EAAC;IAClD,sBAAsB,EAAE,EAAC,QAAQ,EAAE,sBAAsB,EAAC;CAC7D,CAAC"}
@@ -0,0 +1,16 @@
1
+ import { QueryAble } from "./queryAble";
2
+ import { PgDb } from "./pgDb";
3
+ import { PgTable } from "./pgTable";
4
+ export declare class PgSchema extends QueryAble {
5
+ db: PgDb;
6
+ schemaName: string;
7
+ schema: PgSchema;
8
+ tables: {
9
+ [name: string]: PgTable<any>;
10
+ };
11
+ fn: {
12
+ [name: string]: (...any: any[]) => any;
13
+ };
14
+ [name: string]: any | PgTable<any>;
15
+ constructor(db: PgDb, schemaName: string);
16
+ }
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PgSchema = void 0;
4
+ const queryAble_1 = require("./queryAble");
5
+ class PgSchema extends queryAble_1.QueryAble {
6
+ constructor(db, schemaName) {
7
+ super();
8
+ this.db = db;
9
+ this.schemaName = schemaName;
10
+ this.tables = {};
11
+ this.fn = {};
12
+ this.schema = this;
13
+ }
14
+ }
15
+ exports.PgSchema = PgSchema;
16
+ //# sourceMappingURL=pgSchema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pgSchema.js","sourceRoot":"","sources":["../src/pgSchema.ts"],"names":[],"mappings":";;;AAAA,2CAAsC;AAItC,MAAa,QAAS,SAAQ,qBAAS;IAMnC,YAAmB,EAAO,EAAS,UAAiB;QAChD,KAAK,EAAE,CAAC;QADO,OAAE,GAAF,EAAE,CAAK;QAAS,eAAU,GAAV,UAAU,CAAO;QAJpD,WAAM,GAAgC,EAAE,CAAC;QACzC,OAAE,GAAkC,EAAE,CAAC;QAKnC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;IACvB,CAAC;CACJ;AAVD,4BAUC"}
@@ -0,0 +1,131 @@
1
+ /// <reference types="node" />
2
+ import { QueryAble, QueryOptions } from "./queryAble";
3
+ import { PgDb, FieldType } from "./pgDb";
4
+ import { PgDbLogger } from "./pgDbLogger";
5
+ import { PgSchema } from "./pgSchema";
6
+ import * as stream from "stream";
7
+ export interface InsertOption {
8
+ logger?: PgDbLogger;
9
+ }
10
+ export interface Return {
11
+ return?: string[] | '*';
12
+ }
13
+ export interface UpdateDeleteOption {
14
+ skipUndefined?: boolean;
15
+ logger?: PgDbLogger;
16
+ }
17
+ export interface UpsertOption {
18
+ constraint?: string;
19
+ columns?: string[];
20
+ logger?: PgDbLogger;
21
+ }
22
+ export interface CountOption {
23
+ skipUndefined?: boolean;
24
+ logger?: PgDbLogger;
25
+ }
26
+ export interface Stream {
27
+ stream: true;
28
+ }
29
+ export interface TruncateOptions {
30
+ restartIdentity?: boolean;
31
+ cascade?: boolean;
32
+ logger?: PgDbLogger;
33
+ }
34
+ export declare class PgTable<T> extends QueryAble {
35
+ schema: PgSchema;
36
+ protected desc: {
37
+ name: string;
38
+ pkey?: string;
39
+ schema: string;
40
+ };
41
+ qualifiedName: string;
42
+ pkey: string;
43
+ db: PgDb;
44
+ fieldTypes: {
45
+ [index: string]: FieldType;
46
+ };
47
+ constructor(schema: PgSchema, desc: {
48
+ name: string;
49
+ pkey?: string;
50
+ schema: string;
51
+ }, fieldTypes?: {});
52
+ toString(): string;
53
+ insert(records: T[], options?: InsertOption): Promise<number>;
54
+ insert(records: T, options?: InsertOption): Promise<number>;
55
+ insertAndGet(records: T[], options?: InsertOption & Return): Promise<T[]>;
56
+ insertAndGet(records: T, options?: InsertOption & Return): Promise<T>;
57
+ updateOne(conditions: {
58
+ [k: string]: any;
59
+ }, fields: {
60
+ [k: string]: any;
61
+ }, options?: UpdateDeleteOption): Promise<number>;
62
+ updateAndGetOne(conditions: {
63
+ [k: string]: any;
64
+ }, fields: {
65
+ [k: string]: any;
66
+ }, options?: UpdateDeleteOption & Return): Promise<T>;
67
+ update(conditions: {
68
+ [k: string]: any;
69
+ }, fields: {
70
+ [k: string]: any;
71
+ }, options?: UpdateDeleteOption): Promise<number>;
72
+ updateAndGet(conditions: {
73
+ [k: string]: any;
74
+ }, fields: {
75
+ [k: string]: any;
76
+ }, options?: UpdateDeleteOption & Return): Promise<T[]>;
77
+ upsert(record: T, options?: UpsertOption): Promise<number>;
78
+ upsertAndGet(record: T, options?: UpsertOption & Return): Promise<T>;
79
+ delete(conditions: {
80
+ [k: string]: any;
81
+ }, options?: UpdateDeleteOption): Promise<number>;
82
+ deleteOne(conditions: {
83
+ [k: string]: any;
84
+ }, options?: UpdateDeleteOption): Promise<number>;
85
+ deleteAndGet(conditions: {
86
+ [k: string]: any;
87
+ }, options?: UpdateDeleteOption & Return): Promise<any[]>;
88
+ deleteAndGetOne(conditions: {
89
+ [k: string]: any;
90
+ }, options?: UpdateDeleteOption & Return): Promise<any>;
91
+ truncate(options?: TruncateOptions): Promise<void>;
92
+ find(conditions: {
93
+ [k: string]: any;
94
+ }, options?: QueryOptions): Promise<T[]>;
95
+ find(conditions: {
96
+ [k: string]: any;
97
+ }, options?: QueryOptions & Stream): Promise<stream.Readable>;
98
+ findWhere(where: string, params: any[] | {}, options?: QueryOptions): Promise<T[]>;
99
+ findWhere(where: string, params: any[] | {}, options?: QueryOptions & Stream): Promise<stream.Readable>;
100
+ findAll(options?: QueryOptions): Promise<T[]>;
101
+ findAll(options?: QueryOptions & Stream): Promise<stream.Readable>;
102
+ findOne(conditions: any, options?: QueryOptions): Promise<T>;
103
+ findFirst(conditions: any, options?: QueryOptions): Promise<T>;
104
+ count(conditions?: {}, options?: CountOption): Promise<number>;
105
+ findOneFieldOnly(conditions: any, field: string, options?: QueryOptions): Promise<any>;
106
+ private getInsertQuery;
107
+ protected getUpdateSetSnipplet(fields: {
108
+ [k: string]: any;
109
+ }, parameters?: any[]): {
110
+ snipplet: string;
111
+ parameters: any[];
112
+ };
113
+ protected getUpdateQuery(conditions: {
114
+ [k: string]: any;
115
+ }, fields: {
116
+ [k: string]: any;
117
+ }, options?: UpdateDeleteOption): {
118
+ sql: string;
119
+ parameters: any[];
120
+ };
121
+ protected getUpsertQuery(record: T, options?: UpsertOption): {
122
+ sql: string;
123
+ parameters: any[];
124
+ };
125
+ protected getDeleteQuery(conditions: {
126
+ [k: string]: any;
127
+ }, options?: UpdateDeleteOption): {
128
+ sql: string;
129
+ parameters: any[];
130
+ };
131
+ }
package/lib/pgTable.js ADDED
@@ -0,0 +1,322 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PgTable = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const queryAble_1 = require("./queryAble");
6
+ const queryWhere_1 = require("./queryWhere");
7
+ const pgUtils_1 = require("./pgUtils");
8
+ const _ = require("lodash");
9
+ const util = require('util');
10
+ class PgTable extends queryAble_1.QueryAble {
11
+ constructor(schema, desc, fieldTypes = {}) {
12
+ super();
13
+ this.schema = schema;
14
+ this.desc = desc;
15
+ this.db = schema.db;
16
+ this.qualifiedName = util.format('"%s"."%s"', desc.schema, desc.name);
17
+ this.pkey = desc.pkey || desc.name + "_pkey";
18
+ this.fieldTypes = fieldTypes;
19
+ }
20
+ toString() {
21
+ return this.qualifiedName;
22
+ }
23
+ insert(records, options) {
24
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
25
+ options = options || {};
26
+ if (!records) {
27
+ throw new Error("insert should be called with data");
28
+ }
29
+ else if (!Array.isArray(records)) {
30
+ records = [records];
31
+ }
32
+ else if (records.length === 0) {
33
+ return 0;
34
+ }
35
+ let { sql, parameters } = this.getInsertQuery(records);
36
+ sql = "WITH __RESULT as ( " + sql + " RETURNING 1) SELECT SUM(1) FROM __RESULT";
37
+ let result = yield this.query(sql, parameters, { logger: options.logger });
38
+ return result[0].sum;
39
+ });
40
+ }
41
+ insertAndGet(records, options) {
42
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
43
+ let returnSingle = false;
44
+ options = options || {};
45
+ if (!records) {
46
+ throw new Error("insert should be called with data");
47
+ }
48
+ else if (!Array.isArray(records)) {
49
+ returnSingle = true;
50
+ records = [records];
51
+ }
52
+ else if (records.length === 0) {
53
+ return [];
54
+ }
55
+ let { sql, parameters } = this.getInsertQuery(records);
56
+ sql += " RETURNING " + (options && options.return && Array.isArray(options.return) ? options.return.map(pgUtils_1.pgUtils.quoteField).join(',') : '*');
57
+ let result = yield this.query(sql, parameters, { logger: options.logger });
58
+ if (options.return && options.return.length == 0) {
59
+ return new Array(returnSingle ? 1 : records.length).fill({});
60
+ }
61
+ if (returnSingle) {
62
+ return result[0];
63
+ }
64
+ else {
65
+ return result;
66
+ }
67
+ });
68
+ }
69
+ ;
70
+ updateOne(conditions, fields, options) {
71
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
72
+ let affected = yield this.update(conditions, fields, options);
73
+ if (affected > 1) {
74
+ throw new Error('More then one record has been updated!');
75
+ }
76
+ return affected;
77
+ });
78
+ }
79
+ updateAndGetOne(conditions, fields, options) {
80
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
81
+ let result = yield this.updateAndGet(conditions, fields, options);
82
+ if (result.length > 1) {
83
+ throw new Error('More then one record has been updated!');
84
+ }
85
+ return result[0];
86
+ });
87
+ }
88
+ update(conditions, fields, options) {
89
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
90
+ let { sql, parameters } = this.getUpdateQuery(conditions, fields, options);
91
+ sql = "WITH __RESULT as ( " + sql + " RETURNING 1) SELECT SUM(1) FROM __RESULT";
92
+ let res = yield this.query(sql, parameters, options);
93
+ return res[0].sum;
94
+ });
95
+ }
96
+ ;
97
+ updateAndGet(conditions, fields, options) {
98
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
99
+ let { sql, parameters } = this.getUpdateQuery(conditions, fields, options);
100
+ sql += " RETURNING " + (options && options.return && Array.isArray(options.return) ? options.return.map(pgUtils_1.pgUtils.quoteField).join(',') : '*');
101
+ return this.query(sql, parameters, options);
102
+ });
103
+ }
104
+ ;
105
+ upsert(record, options) {
106
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
107
+ options = options || {};
108
+ if (!record) {
109
+ throw new Error("insert should be called with data");
110
+ }
111
+ let { sql, parameters } = this.getUpsertQuery(record, options);
112
+ sql = "WITH __RESULT as ( " + sql + " RETURNING 1) SELECT SUM(1) FROM __RESULT";
113
+ let result = yield this.query(sql, parameters, { logger: options.logger });
114
+ return result[0].sum;
115
+ });
116
+ }
117
+ ;
118
+ upsertAndGet(record, options) {
119
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
120
+ options = options || {};
121
+ if (!record) {
122
+ throw new Error("insert should be called with data");
123
+ }
124
+ let { sql, parameters } = this.getUpsertQuery(record, options);
125
+ sql += " RETURNING " + (options && options.return && Array.isArray(options.return) ? options.return.map(pgUtils_1.pgUtils.quoteField).join(',') : '*');
126
+ let result = yield this.query(sql, parameters, { logger: options.logger });
127
+ if (options.return && options.return.length == 0) {
128
+ return {};
129
+ }
130
+ return result[0];
131
+ });
132
+ }
133
+ ;
134
+ delete(conditions, options) {
135
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
136
+ let { sql, parameters } = this.getDeleteQuery(conditions, options);
137
+ sql = "WITH __RESULT as ( " + sql + " RETURNING 1) SELECT SUM(1) FROM __RESULT";
138
+ let res = yield this.query(sql, parameters, options);
139
+ return res[0].sum;
140
+ });
141
+ }
142
+ deleteOne(conditions, options) {
143
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
144
+ let affected = yield this.delete(conditions, options);
145
+ if (affected > 1) {
146
+ throw new Error('More then one record has been deleted!');
147
+ }
148
+ return affected;
149
+ });
150
+ }
151
+ deleteAndGet(conditions, options) {
152
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
153
+ options = options || {};
154
+ let { sql, parameters } = this.getDeleteQuery(conditions, options);
155
+ sql += " RETURNING " + (options && options.return && Array.isArray(options.return) ? options.return.map(pgUtils_1.pgUtils.quoteField).join(',') : '*');
156
+ return this.query(sql, parameters);
157
+ });
158
+ }
159
+ deleteAndGetOne(conditions, options) {
160
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
161
+ let result = yield this.deleteAndGet(conditions, options);
162
+ if (result.length > 1) {
163
+ throw new Error('More then one record has been deleted!');
164
+ }
165
+ return result[0];
166
+ });
167
+ }
168
+ truncate(options) {
169
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
170
+ let sql = `TRUNCATE ${this.qualifiedName}`;
171
+ if (options && options.restartIdentity) {
172
+ sql += ' RESTART IDENTITY';
173
+ }
174
+ if (options && options.cascade) {
175
+ sql += ' CASCADE';
176
+ }
177
+ yield this.query(sql, null, options);
178
+ });
179
+ }
180
+ find(conditions, options) {
181
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
182
+ options = options || {};
183
+ options.skipUndefined = options.skipUndefined === true || (options.skipUndefined === undefined && ['all', 'select'].indexOf(this.db.config.skipUndefined) > -1);
184
+ let where = _.isEmpty(conditions) ? {
185
+ where: " ",
186
+ params: null
187
+ } : queryWhere_1.default(conditions, this.fieldTypes, this.qualifiedName, 0, options.skipUndefined);
188
+ let sql = `SELECT ${pgUtils_1.pgUtils.processQueryFields(options)} FROM ${this.qualifiedName} ${where.where} ${pgUtils_1.pgUtils.processQueryOptions(options)}`;
189
+ return options.stream ? this.queryAsStream(sql, where.params, options) : this.query(sql, where.params, options);
190
+ });
191
+ }
192
+ findWhere(where, params, options) {
193
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
194
+ options = options || {};
195
+ let sql = `SELECT ${pgUtils_1.pgUtils.processQueryFields(options)} FROM ${this.qualifiedName} WHERE ${where} ${pgUtils_1.pgUtils.processQueryOptions(options)}`;
196
+ return options.stream ? this.queryAsStream(sql, params, options) : this.query(sql, params, options);
197
+ });
198
+ }
199
+ findAll(options) {
200
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
201
+ options = options || {};
202
+ let sql = `SELECT ${pgUtils_1.pgUtils.processQueryFields(options)} FROM ${this.qualifiedName} ${pgUtils_1.pgUtils.processQueryOptions(options)}`;
203
+ return options.stream ? this.queryAsStream(sql, null, options) : this.query(sql, null, options);
204
+ });
205
+ }
206
+ findOne(conditions, options) {
207
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
208
+ let res = yield this.find(conditions, options);
209
+ if (res.length > 1) {
210
+ let logger = (options && options.logger || this.getLogger(false));
211
+ let error = new Error('More then one rows exists');
212
+ pgUtils_1.pgUtils.logError(logger, { error, sql: this.qualifiedName, params: conditions, connection: this.db.connection });
213
+ throw error;
214
+ }
215
+ return res[0];
216
+ });
217
+ }
218
+ findFirst(conditions, options) {
219
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
220
+ options = options || {};
221
+ options.limit = 1;
222
+ let res = yield this.find(conditions, options);
223
+ return res[0];
224
+ });
225
+ }
226
+ count(conditions, options) {
227
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
228
+ options = options || {};
229
+ options.skipUndefined = options.skipUndefined === true || (options.skipUndefined === undefined && ['all', 'select'].indexOf(this.db.config.skipUndefined) > -1);
230
+ let where = _.isEmpty(conditions) ? {
231
+ where: " ",
232
+ params: null
233
+ } : queryWhere_1.default(conditions, this.fieldTypes, this.qualifiedName, 0, options.skipUndefined);
234
+ let sql = `SELECT COUNT(*) c FROM ${this.qualifiedName} ${where.where}`;
235
+ return (yield this.queryOneField(sql, where.params));
236
+ });
237
+ }
238
+ findOneFieldOnly(conditions, field, options) {
239
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
240
+ options = options || {};
241
+ options.fields = [field];
242
+ let res = yield this.findOne(conditions, options);
243
+ return res ? res[field] : null;
244
+ });
245
+ }
246
+ getInsertQuery(records) {
247
+ let columnsMap = {};
248
+ records.forEach(rec => {
249
+ for (let field in rec) {
250
+ columnsMap[field] = true;
251
+ }
252
+ });
253
+ let columns = Object.keys(columnsMap);
254
+ let sql = util.format("INSERT INTO %s (%s) VALUES\n", this.qualifiedName, columns.map(pgUtils_1.pgUtils.quoteField).join(", "));
255
+ let parameters = [];
256
+ let placeholders = [];
257
+ for (let i = 0, seed = 0; i < records.length; i++) {
258
+ placeholders.push('(' + columns.map(c => "$" + (++seed)).join(', ') + ')');
259
+ parameters.push.apply(parameters, columns.map(c => pgUtils_1.pgUtils.transformInsertUpdateParams(records[i][c], this.fieldTypes[c])));
260
+ }
261
+ sql += placeholders.join(",\n");
262
+ return { sql, parameters };
263
+ }
264
+ getUpdateSetSnipplet(fields, parameters) {
265
+ let params = parameters || [];
266
+ let f = [];
267
+ let seed = params.length;
268
+ _.each(fields, (value, fieldName) => {
269
+ if (value === undefined)
270
+ return;
271
+ f.push(util.format('%s = $%s', pgUtils_1.pgUtils.quoteField(fieldName), (++seed)));
272
+ params.push(pgUtils_1.pgUtils.transformInsertUpdateParams(value, this.fieldTypes[fieldName]));
273
+ });
274
+ return { snipplet: f.join(', '), parameters: params };
275
+ }
276
+ getUpdateQuery(conditions, fields, options) {
277
+ options = options || {};
278
+ options.skipUndefined = options.skipUndefined === true || (options.skipUndefined === undefined && this.db.config.skipUndefined === 'all');
279
+ let hasConditions = true;
280
+ if (_.isEmpty(fields)) {
281
+ throw new Error('Missing fields for update');
282
+ }
283
+ let { snipplet, parameters } = this.getUpdateSetSnipplet(fields);
284
+ let sql = util.format("UPDATE %s SET %s", this.qualifiedName, snipplet);
285
+ if (!hasConditions || !_.isEmpty(conditions)) {
286
+ let parsedWhere = queryWhere_1.default(conditions, this.fieldTypes, this.qualifiedName, parameters.length, options.skipUndefined);
287
+ sql += parsedWhere.where;
288
+ parameters = parameters.concat(parsedWhere.params);
289
+ }
290
+ return { sql, parameters };
291
+ }
292
+ getUpsertQuery(record, options) {
293
+ options = options || {};
294
+ if (_.isEmpty(record)) {
295
+ throw new Error('Missing fields for upsert');
296
+ }
297
+ let insert = this.getInsertQuery([record]);
298
+ let { snipplet, parameters } = this.getUpdateSetSnipplet(record, insert.parameters);
299
+ let sql = insert.sql;
300
+ if (options.columns) {
301
+ sql += " ON CONFLICT (" + options.columns.map(c => pgUtils_1.pgUtils.quoteField(c)).join(', ') + ") DO UPDATE SET " + snipplet;
302
+ }
303
+ else {
304
+ let constraint = options.constraint || this.pkey;
305
+ sql += " ON CONFLICT ON CONSTRAINT " + util.format('"%s"', constraint) + " DO UPDATE SET " + snipplet;
306
+ }
307
+ return { sql, parameters };
308
+ }
309
+ getDeleteQuery(conditions, options) {
310
+ options = options || {};
311
+ options.skipUndefined = options.skipUndefined === true || (options.skipUndefined === undefined && this.db.config.skipUndefined === 'all');
312
+ let sql = util.format("DELETE FROM %s ", this.qualifiedName);
313
+ let parsedWhere;
314
+ if (!_.isEmpty(conditions)) {
315
+ parsedWhere = queryWhere_1.default(conditions, this.fieldTypes, this.qualifiedName, 0, options.skipUndefined);
316
+ sql += parsedWhere.where;
317
+ }
318
+ return { sql, parameters: parsedWhere && parsedWhere.params || [] };
319
+ }
320
+ }
321
+ exports.PgTable = PgTable;
322
+ //# sourceMappingURL=pgTable.js.map