@webda/postgres 1.6.0-beta.3 → 2.0.0-beta.2
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/lib/index.js +5 -1
- package/lib/index.js.map +1 -1
- package/lib/postgresstore.d.ts +7 -6
- package/lib/postgresstore.js +13 -16
- package/lib/postgresstore.js.map +1 -1
- package/lib/sqlstore.d.ts +13 -3
- package/lib/sqlstore.js +60 -17
- package/lib/sqlstore.js.map +1 -1
- package/package.json +6 -5
- package/test/config.json +3 -1
- package/webda.module.json +2018 -3
package/lib/index.js
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
3
|
if (k2 === undefined) k2 = k;
|
|
4
|
-
Object.
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
5
9
|
}) : (function(o, m, k, k2) {
|
|
6
10
|
if (k2 === undefined) k2 = k;
|
|
7
11
|
o[k2] = m[k];
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,kDAAgC;AAChC,6CAA2B"}
|
package/lib/postgresstore.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { CoreModel
|
|
1
|
+
import { CoreModel } from "@webda/core";
|
|
2
|
+
import { Client, ClientConfig, Pool, PoolConfig } from "pg";
|
|
2
3
|
import { SQLResult, SQLStore, SQLStoreParameters } from "./sqlstore";
|
|
3
|
-
import { Pool, Client, ClientConfig, PoolConfig } from "pg";
|
|
4
4
|
declare class PostgresParameters extends SQLStoreParameters {
|
|
5
5
|
/**
|
|
6
6
|
* @default false
|
|
@@ -25,6 +25,7 @@ declare class PostgresParameters extends SQLStoreParameters {
|
|
|
25
25
|
* );
|
|
26
26
|
* ```
|
|
27
27
|
*
|
|
28
|
+
* @WebdaModda
|
|
28
29
|
*/
|
|
29
30
|
export default class PostgresStore<T extends CoreModel = CoreModel, K extends PostgresParameters = PostgresParameters> extends SQLStore<T, K> {
|
|
30
31
|
client: Client | Pool;
|
|
@@ -48,6 +49,10 @@ export default class PostgresStore<T extends CoreModel = CoreModel, K extends Po
|
|
|
48
49
|
* @returns
|
|
49
50
|
*/
|
|
50
51
|
executeQuery(query: string): Promise<SQLResult<T>>;
|
|
52
|
+
/**
|
|
53
|
+
* @override
|
|
54
|
+
*/
|
|
55
|
+
mapExpressionAttribute(attribute: string[]): string;
|
|
51
56
|
/**
|
|
52
57
|
* @override
|
|
53
58
|
*/
|
|
@@ -72,9 +77,5 @@ export default class PostgresStore<T extends CoreModel = CoreModel, K extends Po
|
|
|
72
77
|
* @override
|
|
73
78
|
*/
|
|
74
79
|
_deleteItemFromCollection(uuid: string, attribute: string, index: number, itemWriteCondition: any, itemWriteConditionField: string, updateDate: Date): Promise<any>;
|
|
75
|
-
/**
|
|
76
|
-
* @override
|
|
77
|
-
*/
|
|
78
|
-
static getModda(): ModdaDefinition;
|
|
79
80
|
}
|
|
80
81
|
export {};
|
package/lib/postgresstore.js
CHANGED
|
@@ -10,8 +10,8 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
10
10
|
};
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
12
|
const core_1 = require("@webda/core");
|
|
13
|
-
const sqlstore_1 = require("./sqlstore");
|
|
14
13
|
const pg_1 = require("pg");
|
|
14
|
+
const sqlstore_1 = require("./sqlstore");
|
|
15
15
|
class PostgresParameters extends sqlstore_1.SQLStoreParameters {
|
|
16
16
|
}
|
|
17
17
|
/**
|
|
@@ -28,6 +28,7 @@ class PostgresParameters extends sqlstore_1.SQLStoreParameters {
|
|
|
28
28
|
* );
|
|
29
29
|
* ```
|
|
30
30
|
*
|
|
31
|
+
* @WebdaModda
|
|
31
32
|
*/
|
|
32
33
|
class PostgresStore extends sqlstore_1.SQLStore {
|
|
33
34
|
/**
|
|
@@ -77,6 +78,12 @@ class PostgresStore extends sqlstore_1.SQLStore {
|
|
|
77
78
|
};
|
|
78
79
|
});
|
|
79
80
|
}
|
|
81
|
+
/**
|
|
82
|
+
* @override
|
|
83
|
+
*/
|
|
84
|
+
mapExpressionAttribute(attribute) {
|
|
85
|
+
return `data#>>'{${attribute.join(",")}}'`;
|
|
86
|
+
}
|
|
80
87
|
/**
|
|
81
88
|
* @override
|
|
82
89
|
*/
|
|
@@ -86,7 +93,7 @@ class PostgresStore extends sqlstore_1.SQLStore {
|
|
|
86
93
|
if (itemWriteCondition) {
|
|
87
94
|
query += this.getQueryCondition(itemWriteCondition, itemWriteConditionField);
|
|
88
95
|
}
|
|
89
|
-
let res = yield this.
|
|
96
|
+
let res = yield this.sqlQuery(query);
|
|
90
97
|
if (res.rowCount === 0) {
|
|
91
98
|
throw new core_1.UpdateConditionFailError(uid, itemWriteConditionField, itemWriteCondition);
|
|
92
99
|
}
|
|
@@ -101,7 +108,7 @@ class PostgresStore extends sqlstore_1.SQLStore {
|
|
|
101
108
|
if (itemWriteCondition) {
|
|
102
109
|
query += this.getQueryCondition(itemWriteCondition, itemWriteConditionField);
|
|
103
110
|
}
|
|
104
|
-
let res = yield this.
|
|
111
|
+
let res = yield this.sqlQuery(query);
|
|
105
112
|
if (res.rowCount === 0) {
|
|
106
113
|
if (itemWriteCondition) {
|
|
107
114
|
throw new core_1.UpdateConditionFailError(uuid, itemWriteConditionField, itemWriteCondition);
|
|
@@ -124,7 +131,7 @@ class PostgresStore extends sqlstore_1.SQLStore {
|
|
|
124
131
|
_incrementAttribute(uid, attribute, value, updateDate) {
|
|
125
132
|
return __awaiter(this, void 0, void 0, function* () {
|
|
126
133
|
let query = `UPDATE ${this.parameters.table} SET data = jsonb_set(jsonb_set(data, '{${attribute}}', (COALESCE(data->>'${attribute}','0')::int + ${value})::text::jsonb)::jsonb, '{_lastUpdate}', '"${updateDate.toISOString()}"'::jsonb) WHERE uuid = '${this.getUuid(uid)}'`;
|
|
127
|
-
let res = yield this.
|
|
134
|
+
let res = yield this.sqlQuery(query);
|
|
128
135
|
if (res.rowCount === 0) {
|
|
129
136
|
throw new core_1.StoreNotFoundError(uid, this.getName());
|
|
130
137
|
}
|
|
@@ -146,7 +153,7 @@ class PostgresStore extends sqlstore_1.SQLStore {
|
|
|
146
153
|
if (itemWriteCondition) {
|
|
147
154
|
query += ` AND (data#>>'{${attribute}, ${index}}')::jsonb->>'${itemWriteConditionField}'='${itemWriteCondition}'`;
|
|
148
155
|
}
|
|
149
|
-
let res = yield this.
|
|
156
|
+
let res = yield this.sqlQuery(query);
|
|
150
157
|
if (res.rowCount === 0) {
|
|
151
158
|
if (itemWriteCondition) {
|
|
152
159
|
throw new core_1.UpdateConditionFailError(uuid, itemWriteConditionField, itemWriteCondition);
|
|
@@ -168,7 +175,7 @@ class PostgresStore extends sqlstore_1.SQLStore {
|
|
|
168
175
|
if (itemWriteCondition) {
|
|
169
176
|
query += ` AND (data#>>'{${attribute}, ${index}}')::jsonb->>'${itemWriteConditionField}'='${itemWriteCondition}'`;
|
|
170
177
|
}
|
|
171
|
-
let res = yield this.
|
|
178
|
+
let res = yield this.sqlQuery(query);
|
|
172
179
|
if (res.rowCount === 0) {
|
|
173
180
|
if (itemWriteCondition) {
|
|
174
181
|
throw new core_1.UpdateConditionFailError(uuid, itemWriteConditionField, itemWriteCondition);
|
|
@@ -179,16 +186,6 @@ class PostgresStore extends sqlstore_1.SQLStore {
|
|
|
179
186
|
}
|
|
180
187
|
});
|
|
181
188
|
}
|
|
182
|
-
/**
|
|
183
|
-
* @override
|
|
184
|
-
*/
|
|
185
|
-
static getModda() {
|
|
186
|
-
return {
|
|
187
|
-
uuid: "Webda/PostgresStore",
|
|
188
|
-
label: "PostgresStore",
|
|
189
|
-
description: "Implements PostgreSQL storage"
|
|
190
|
-
};
|
|
191
|
-
}
|
|
192
189
|
}
|
|
193
190
|
exports.default = PostgresStore;
|
|
194
191
|
//# sourceMappingURL=postgresstore.js.map
|
package/lib/postgresstore.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"postgresstore.js","sourceRoot":"","sources":["../src/postgresstore.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"postgresstore.js","sourceRoot":"","sources":["../src/postgresstore.ts"],"names":[],"mappings":"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"}
|
package/lib/sqlstore.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { CoreModel, Store, StoreParameters } from "@webda/core";
|
|
1
|
+
import { CoreModel, Store, StoreParameters, WebdaQL } from "@webda/core";
|
|
2
2
|
export interface SQLDatabase {
|
|
3
3
|
name: string;
|
|
4
4
|
}
|
|
@@ -13,18 +13,28 @@ export interface SQLResult<T> {
|
|
|
13
13
|
rows: T[];
|
|
14
14
|
rowCount: number;
|
|
15
15
|
}
|
|
16
|
+
export declare class SQLComparisonExpression extends WebdaQL.ComparisonExpression {
|
|
17
|
+
toStringValue(value: (string | number | boolean) | (string | number | boolean)[]): string;
|
|
18
|
+
toStringAttribute(): string;
|
|
19
|
+
}
|
|
16
20
|
export declare abstract class SQLStore<T extends CoreModel, K extends SQLStoreParameters = SQLStoreParameters> extends Store<T, K> {
|
|
17
|
-
|
|
21
|
+
sqlQuery(q: string): Promise<SQLResult<T>>;
|
|
18
22
|
abstract executeQuery(q: string): Promise<SQLResult<T>>;
|
|
19
23
|
completeQuery(q: string): string;
|
|
20
24
|
/**
|
|
21
25
|
* @override
|
|
22
26
|
*/
|
|
23
27
|
_delete(uid: string, writeCondition: any, writeConditionField: string): Promise<void>;
|
|
28
|
+
abstract mapExpressionAttribute(attribute: string[]): string;
|
|
29
|
+
duplicateExpression(expression: WebdaQL.Expression): WebdaQL.Expression;
|
|
24
30
|
/**
|
|
25
31
|
* @override
|
|
26
32
|
*/
|
|
27
|
-
|
|
33
|
+
find(query: WebdaQL.Query): Promise<{
|
|
34
|
+
results: T[];
|
|
35
|
+
continuationToken: string;
|
|
36
|
+
filter: WebdaQL.Expression;
|
|
37
|
+
}>;
|
|
28
38
|
/**
|
|
29
39
|
* @override
|
|
30
40
|
*/
|
package/lib/sqlstore.js
CHANGED
|
@@ -9,13 +9,29 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
9
9
|
});
|
|
10
10
|
};
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.SQLStore = exports.SQLStoreParameters = void 0;
|
|
12
|
+
exports.SQLStore = exports.SQLComparisonExpression = exports.SQLStoreParameters = void 0;
|
|
13
13
|
const core_1 = require("@webda/core");
|
|
14
14
|
class SQLStoreParameters extends core_1.StoreParameters {
|
|
15
15
|
}
|
|
16
16
|
exports.SQLStoreParameters = SQLStoreParameters;
|
|
17
|
+
class SQLComparisonExpression extends core_1.WebdaQL.ComparisonExpression {
|
|
18
|
+
toStringValue(value) {
|
|
19
|
+
if (typeof value === "string") {
|
|
20
|
+
return `'${value}'`;
|
|
21
|
+
}
|
|
22
|
+
return super.toStringValue(value);
|
|
23
|
+
}
|
|
24
|
+
toStringAttribute() {
|
|
25
|
+
if ([">", "<", "<=", ">="].includes(this.operator)) {
|
|
26
|
+
// coalesce(data#>>'{${this.attribute[0]}}', '0') ?
|
|
27
|
+
return `CAST(${this.attribute[0]} AS integer)`;
|
|
28
|
+
}
|
|
29
|
+
return this.attribute[0];
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
exports.SQLComparisonExpression = SQLComparisonExpression;
|
|
17
33
|
class SQLStore extends core_1.Store {
|
|
18
|
-
|
|
34
|
+
sqlQuery(q) {
|
|
19
35
|
q = this.completeQuery(q);
|
|
20
36
|
return this.executeQuery(q);
|
|
21
37
|
}
|
|
@@ -38,24 +54,51 @@ class SQLStore extends core_1.Store {
|
|
|
38
54
|
if (writeCondition) {
|
|
39
55
|
query += this.getQueryCondition(writeCondition, writeConditionField);
|
|
40
56
|
}
|
|
41
|
-
let res = yield this.
|
|
57
|
+
let res = yield this.sqlQuery(query);
|
|
42
58
|
if (res.rowCount === 0 && writeCondition) {
|
|
43
59
|
throw new core_1.UpdateConditionFailError(uid, writeConditionField, writeCondition);
|
|
44
60
|
}
|
|
45
61
|
});
|
|
46
62
|
}
|
|
63
|
+
duplicateExpression(expression) {
|
|
64
|
+
if (expression instanceof core_1.WebdaQL.AndExpression) {
|
|
65
|
+
return new core_1.WebdaQL.AndExpression(expression.children.map(exp => this.duplicateExpression(exp)));
|
|
66
|
+
}
|
|
67
|
+
else if (expression instanceof core_1.WebdaQL.OrExpression) {
|
|
68
|
+
return new core_1.WebdaQL.OrExpression(expression.children.map(exp => this.duplicateExpression(exp)));
|
|
69
|
+
}
|
|
70
|
+
else if (expression instanceof core_1.WebdaQL.ComparisonExpression) {
|
|
71
|
+
if (expression.operator === "IN") {
|
|
72
|
+
const attr = this.mapExpressionAttribute(expression.attribute);
|
|
73
|
+
return new core_1.WebdaQL.OrExpression(expression.value.map(v => new SQLComparisonExpression("=", attr, v)));
|
|
74
|
+
}
|
|
75
|
+
return new SQLComparisonExpression(expression.operator, this.mapExpressionAttribute(expression.attribute), expression.value);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
47
78
|
/**
|
|
48
79
|
* @override
|
|
49
80
|
*/
|
|
50
|
-
|
|
81
|
+
find(query) {
|
|
51
82
|
return __awaiter(this, void 0, void 0, function* () {
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
83
|
+
// Update condition
|
|
84
|
+
let sql = this.duplicateExpression(query.filter).toString() || "TRUE";
|
|
85
|
+
let offset = 0;
|
|
86
|
+
offset = parseInt(query.continuationToken || "0", 10);
|
|
87
|
+
if (query.orderBy && query.orderBy.length) {
|
|
88
|
+
sql +=
|
|
89
|
+
" ORDER BY " +
|
|
90
|
+
query.orderBy.map(c => `${this.mapExpressionAttribute(c.field.split("."))} ${c.direction}`).join(", ");
|
|
91
|
+
}
|
|
92
|
+
sql += ` LIMIT ${query.limit || "1000"}`;
|
|
93
|
+
if (offset) {
|
|
94
|
+
sql += ` OFFSET ${offset}`;
|
|
56
95
|
}
|
|
57
|
-
|
|
58
|
-
return
|
|
96
|
+
const results = (yield this.sqlQuery(sql)).rows.map(c => this.initModel(c));
|
|
97
|
+
return {
|
|
98
|
+
results,
|
|
99
|
+
continuationToken: query.limit <= results.length ? (offset + query.limit).toString() : undefined,
|
|
100
|
+
filter: new core_1.WebdaQL.AndExpression([])
|
|
101
|
+
};
|
|
59
102
|
});
|
|
60
103
|
}
|
|
61
104
|
/**
|
|
@@ -63,7 +106,7 @@ class SQLStore extends core_1.Store {
|
|
|
63
106
|
*/
|
|
64
107
|
exists(uid) {
|
|
65
108
|
return __awaiter(this, void 0, void 0, function* () {
|
|
66
|
-
let res = yield this.
|
|
109
|
+
let res = yield this.sqlQuery(`SELECT uuid FROM ${this.parameters.table} WHERE ${this.getModel().getUuidField()} = '${this.getUuid(uid)}'`);
|
|
67
110
|
return res.rowCount === 1;
|
|
68
111
|
});
|
|
69
112
|
}
|
|
@@ -72,7 +115,7 @@ class SQLStore extends core_1.Store {
|
|
|
72
115
|
*/
|
|
73
116
|
_get(uid, raiseIfNotFound) {
|
|
74
117
|
return __awaiter(this, void 0, void 0, function* () {
|
|
75
|
-
let res = yield this.
|
|
118
|
+
let res = yield this.sqlQuery(`${this.getModel().getUuidField()} = '${this.getUuid(uid)}'`);
|
|
76
119
|
if (res.rowCount === 0 && raiseIfNotFound) {
|
|
77
120
|
throw new core_1.StoreNotFoundError(uid, this.getName());
|
|
78
121
|
}
|
|
@@ -85,9 +128,9 @@ class SQLStore extends core_1.Store {
|
|
|
85
128
|
getAll(list) {
|
|
86
129
|
return __awaiter(this, void 0, void 0, function* () {
|
|
87
130
|
if (list) {
|
|
88
|
-
return (yield this.
|
|
131
|
+
return (yield this.sqlQuery(list.map(uuid => `uuid='${this.getUuid(uuid)}'`).join(" OR "))).rows;
|
|
89
132
|
}
|
|
90
|
-
return (yield this.
|
|
133
|
+
return (yield this.sqlQuery("TRUE")).rows;
|
|
91
134
|
});
|
|
92
135
|
}
|
|
93
136
|
/**
|
|
@@ -99,7 +142,7 @@ class SQLStore extends core_1.Store {
|
|
|
99
142
|
if (itemWriteCondition) {
|
|
100
143
|
q += this.getQueryCondition(itemWriteCondition, itemWriteConditionField);
|
|
101
144
|
}
|
|
102
|
-
let res = yield this.
|
|
145
|
+
let res = yield this.sqlQuery(q);
|
|
103
146
|
if (res.rowCount === 0) {
|
|
104
147
|
throw new core_1.UpdateConditionFailError(uid, itemWriteConditionField, itemWriteCondition);
|
|
105
148
|
}
|
|
@@ -121,13 +164,13 @@ class SQLStore extends core_1.Store {
|
|
|
121
164
|
*/
|
|
122
165
|
_save(object) {
|
|
123
166
|
return __awaiter(this, void 0, void 0, function* () {
|
|
124
|
-
yield this.
|
|
167
|
+
yield this.sqlQuery(`INSERT INTO ${this.parameters.table}(uuid,data) VALUES('${this.getUuid(object)}', '${object.toStoredJSON(true)}')`);
|
|
125
168
|
return object;
|
|
126
169
|
});
|
|
127
170
|
}
|
|
128
171
|
__clean() {
|
|
129
172
|
return __awaiter(this, void 0, void 0, function* () {
|
|
130
|
-
yield this.
|
|
173
|
+
yield this.sqlQuery(`DELETE FROM ${this.parameters.table}`);
|
|
131
174
|
});
|
|
132
175
|
}
|
|
133
176
|
}
|
package/lib/sqlstore.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sqlstore.js","sourceRoot":"","sources":["../src/sqlstore.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"sqlstore.js","sourceRoot":"","sources":["../src/sqlstore.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@webda/postgres",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "2.0.0-beta.2",
|
|
4
4
|
"description": "Implements Postgres on webda",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"postgres",
|
|
@@ -11,14 +11,14 @@
|
|
|
11
11
|
"main": "lib/index.js",
|
|
12
12
|
"typings": "lib/index.d.ts",
|
|
13
13
|
"scripts": {
|
|
14
|
-
"build": "
|
|
14
|
+
"build": "webda build",
|
|
15
15
|
"pretest": "npm run build",
|
|
16
16
|
"lint": "prettier --check src/**/*",
|
|
17
17
|
"lint:fix": "prettier --write src/**/*",
|
|
18
18
|
"test": "nyc mocha --recursive --exit --timeout=100000 -r ../../node_modules/ts-node/register src/**/*.spec.ts src/*.spec.ts"
|
|
19
19
|
},
|
|
20
20
|
"dependencies": {
|
|
21
|
-
"@webda/core": "^
|
|
21
|
+
"@webda/core": "^2.0.0-beta.2",
|
|
22
22
|
"pg": "^8.7.1"
|
|
23
23
|
},
|
|
24
24
|
"files": [
|
|
@@ -47,7 +47,8 @@
|
|
|
47
47
|
"namespace": "Webda"
|
|
48
48
|
},
|
|
49
49
|
"devDependencies": {
|
|
50
|
-
"@types/node": "14.0.0"
|
|
50
|
+
"@types/node": "14.0.0",
|
|
51
|
+
"@webda/shell": "^2.0.0-beta.2"
|
|
51
52
|
},
|
|
52
|
-
"gitHead": "
|
|
53
|
+
"gitHead": "4928e6830cd4164166d00195ff2fef0d52bf0ba6"
|
|
53
54
|
}
|
package/test/config.json
CHANGED
|
@@ -6,8 +6,10 @@
|
|
|
6
6
|
"host": "localhost",
|
|
7
7
|
"user": "webda.io",
|
|
8
8
|
"database": "webda.io",
|
|
9
|
-
"password": "webda.io"
|
|
9
|
+
"password": "webda.io",
|
|
10
|
+
"statement_timeout": 60000
|
|
10
11
|
},
|
|
12
|
+
"usePool": true,
|
|
11
13
|
"sessionSecret": "Lp4B72FPU5n6q4EpVRGyPFnZp5cgLRPScVWixW52Yq84hD4MmnfVfgxKQ5ENLp4B72FPU5n6q4EpVRGyPFnZp5cgLRPScVWixW52Yq84hD4MmnfVfgxKQ5ENLp4B72FPU5n6q4EpVRGyPFnZp5cgLRPScVWixW52Yq84hD4MmnfVfgxKQ5ENLp4B72FPU5n6q4EpVRGyPFnZp5cgLRPScVWixW52Yq84hD4MmnfVfgxKQ5ENLp4B72FPU5n6q4EpVRGyPFnZp5cgLRPScVWixW52Yq84hD4MmnfVfgxKQ5ENLp4B72FPU5n6q4EpVRGyPFnZp5cgLRPScVWixW52Yq84hD4MmnfVfgxKQ5ENLp4B72FPU5n6q4EpVRGyPFnZp5cgLRPScVWixW52Yq84hD4MmnfVfgxKQ5ENLp4B72FPU5n6q4EpVRGyPFnZp5cgLRPScVWixW52Yq84hD4MmnfVfgxKQ5ENLp4B72FPU5n6q4EpVRGyPFnZp5cgLRPScVWixW52Yq84hD4MmnfVfgxKQ5ENLp4B72FPU5n6q4EpVRGyPFnZp5cgLRPScVWixW52Yq84hD4MmnfVfgxKQ5ENLp4B72FPU5n6q4EpVRGyPFnZp5cgLRPScVWixW52Yq84hD4MmnfVfgxKQ5ENLp4B72FPU5n6q4EpVRGyPFnZp5cgLRPScVWixW52Yq84hD4MmnfVfgxKQ5ENLp4B72FPU5n6q4EpVRGyPFnZp5cgLRPScVWixW52Yq84hD4MmnfVfgxKQ5EN"
|
|
12
14
|
},
|
|
13
15
|
"services": {
|