af-db-ts 1.0.5 → 2.0.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/README.md +3 -3
- package/dist/cjs/__tests__/01_node_env.spec.js +7 -0
- package/dist/cjs/__tests__/01_node_env.spec.js.map +1 -0
- package/dist/cjs/__tests__/02_getValueForSqlMs.spec.js +50 -0
- package/dist/cjs/__tests__/02_getValueForSqlMs.spec.js.map +1 -0
- package/dist/cjs/__tests__/global-setup.js +7 -0
- package/dist/cjs/__tests__/global-setup.js.map +1 -0
- package/dist/cjs/__tests__/global-teardown.js +7 -0
- package/dist/cjs/__tests__/global-teardown.js.map +1 -0
- package/dist/cjs/{interfaces.js → src/@types/i-common.js} +1 -1
- package/dist/cjs/src/@types/i-common.js.map +1 -0
- package/dist/cjs/src/@types/i-config.js +3 -0
- package/dist/cjs/src/@types/i-config.js.map +1 -0
- package/dist/cjs/src/@types/i-ms.js +3 -0
- package/dist/cjs/src/@types/i-ms.js.map +1 -0
- package/dist/cjs/src/@types/i-pg.js +24 -0
- package/dist/cjs/src/@types/i-pg.js.map +1 -0
- package/dist/cjs/src/common.js +30 -0
- package/dist/cjs/src/common.js.map +1 -0
- package/dist/cjs/src/index.js +59 -0
- package/dist/cjs/src/index.js.map +1 -0
- package/dist/cjs/src/logger-error.js +10 -0
- package/dist/cjs/src/logger-error.js.map +1 -0
- package/dist/cjs/{get-value-for-sql.js → src/mssql/get-value-for-sql.js} +12 -8
- package/dist/cjs/src/mssql/get-value-for-sql.js.map +1 -0
- package/dist/cjs/{db.js → src/mssql/pool-ms.js} +73 -77
- package/dist/cjs/src/mssql/pool-ms.js.map +1 -0
- package/dist/cjs/src/mssql/query-ms.js +47 -0
- package/dist/cjs/src/mssql/query-ms.js.map +1 -0
- package/dist/cjs/{sql.js → src/mssql/sql.js} +72 -49
- package/dist/cjs/src/mssql/sql.js.map +1 -0
- package/dist/cjs/src/mssql/utils.js.map +1 -0
- package/dist/cjs/src/pg/get-merge-sql.js +50 -0
- package/dist/cjs/src/pg/get-merge-sql.js.map +1 -0
- package/dist/cjs/src/pg/get-update-sql.js +29 -0
- package/dist/cjs/src/pg/get-update-sql.js.map +1 -0
- package/dist/cjs/src/pg/insert.js +93 -0
- package/dist/cjs/src/pg/insert.js.map +1 -0
- package/dist/cjs/src/pg/is-table-or-view-exists.js +21 -0
- package/dist/cjs/src/pg/is-table-or-view-exists.js.map +1 -0
- package/dist/cjs/src/pg/pg-pool.js +52 -0
- package/dist/cjs/src/pg/pg-pool.js.map +1 -0
- package/dist/cjs/src/pg/prepare-value.js +84 -0
- package/dist/cjs/src/pg/prepare-value.js.map +1 -0
- package/dist/cjs/src/pg/query-pg.js +23 -0
- package/dist/cjs/src/pg/query-pg.js.map +1 -0
- package/dist/cjs/src/pg/table-schema.js +169 -0
- package/dist/cjs/src/pg/table-schema.js.map +1 -0
- package/dist/esm/src/@types/i-common.js +2 -0
- package/dist/esm/src/@types/i-common.js.map +1 -0
- package/dist/esm/src/@types/i-config.js +2 -0
- package/dist/esm/src/@types/i-config.js.map +1 -0
- package/dist/esm/src/@types/i-ms.js +2 -0
- package/dist/esm/src/@types/i-ms.js.map +1 -0
- package/dist/esm/src/@types/i-pg.js +21 -0
- package/dist/esm/src/@types/i-pg.js.map +1 -0
- package/dist/esm/src/common.js +25 -0
- package/dist/esm/src/common.js.map +1 -0
- package/dist/esm/src/index.js +15 -0
- package/dist/esm/src/index.js.map +1 -0
- package/dist/esm/src/logger-error.js +6 -0
- package/dist/esm/src/logger-error.js.map +1 -0
- package/dist/esm/{get-value-for-sql.js → src/mssql/get-value-for-sql.js} +11 -7
- package/dist/esm/src/mssql/get-value-for-sql.js.map +1 -0
- package/dist/esm/{db.js → src/mssql/pool-ms.js} +35 -62
- package/dist/esm/src/mssql/pool-ms.js.map +1 -0
- package/dist/esm/src/mssql/query-ms.js +20 -0
- package/dist/esm/src/mssql/query-ms.js.map +1 -0
- package/dist/esm/{sql.js → src/mssql/sql.js} +36 -36
- package/dist/esm/src/mssql/sql.js.map +1 -0
- package/dist/esm/src/mssql/utils.js.map +1 -0
- package/dist/esm/src/pg/get-merge-sql.js +46 -0
- package/dist/esm/src/pg/get-merge-sql.js.map +1 -0
- package/dist/esm/src/pg/get-update-sql.js +25 -0
- package/dist/esm/src/pg/get-update-sql.js.map +1 -0
- package/dist/esm/src/pg/insert.js +89 -0
- package/dist/esm/src/pg/insert.js.map +1 -0
- package/dist/esm/src/pg/is-table-or-view-exists.js +17 -0
- package/dist/esm/src/pg/is-table-or-view-exists.js.map +1 -0
- package/dist/esm/src/pg/pg-pool.js +43 -0
- package/dist/esm/src/pg/pg-pool.js.map +1 -0
- package/dist/esm/src/pg/prepare-value.js +79 -0
- package/dist/esm/src/pg/prepare-value.js.map +1 -0
- package/dist/esm/src/pg/query-pg.js +19 -0
- package/dist/esm/src/pg/query-pg.js.map +1 -0
- package/dist/esm/src/pg/table-schema.js +164 -0
- package/dist/esm/src/pg/table-schema.js.map +1 -0
- package/dist/types/src/@types/i-common.d.ts +35 -0
- package/dist/types/src/@types/i-common.d.ts.map +1 -0
- package/dist/types/src/@types/i-config.d.ts +60 -0
- package/dist/types/src/@types/i-config.d.ts.map +1 -0
- package/dist/types/{interfaces.d.ts → src/@types/i-ms.d.ts} +30 -77
- package/dist/types/src/@types/i-ms.d.ts.map +1 -0
- package/dist/types/src/@types/i-pg.d.ts +62 -0
- package/dist/types/src/@types/i-pg.d.ts.map +1 -0
- package/dist/types/src/common.d.ts +6 -0
- package/dist/types/src/common.d.ts.map +1 -0
- package/dist/types/src/index.d.ts +18 -0
- package/dist/types/src/index.d.ts.map +1 -0
- package/dist/types/src/logger-error.d.ts +7 -0
- package/dist/types/src/logger-error.d.ts.map +1 -0
- package/dist/types/src/mssql/get-value-for-sql.d.ts +11 -0
- package/dist/types/src/mssql/get-value-for-sql.d.ts.map +1 -0
- package/dist/types/{db.d.ts → src/mssql/pool-ms.d.ts} +18 -15
- package/dist/types/src/mssql/pool-ms.d.ts.map +1 -0
- package/dist/types/src/mssql/query-ms.d.ts +3 -0
- package/dist/types/src/mssql/query-ms.d.ts.map +1 -0
- package/dist/types/{sql.d.ts → src/mssql/sql.d.ts} +17 -16
- package/dist/types/src/mssql/sql.d.ts.map +1 -0
- package/dist/types/src/mssql/utils.d.ts.map +1 -0
- package/dist/types/src/pg/get-merge-sql.d.ts +9 -0
- package/dist/types/src/pg/get-merge-sql.d.ts.map +1 -0
- package/dist/types/src/pg/get-update-sql.d.ts +3 -0
- package/dist/types/src/pg/get-update-sql.d.ts.map +1 -0
- package/dist/types/src/pg/insert.d.ts +15 -0
- package/dist/types/src/pg/insert.d.ts.map +1 -0
- package/dist/types/src/pg/is-table-or-view-exists.d.ts +2 -0
- package/dist/types/src/pg/is-table-or-view-exists.d.ts.map +1 -0
- package/dist/types/src/pg/pg-pool.d.ts +6 -0
- package/dist/types/src/pg/pg-pool.d.ts.map +1 -0
- package/dist/types/src/pg/prepare-value.d.ts +7 -0
- package/dist/types/src/pg/prepare-value.d.ts.map +1 -0
- package/dist/types/src/pg/query-pg.d.ts +3 -0
- package/dist/types/src/pg/query-pg.d.ts.map +1 -0
- package/dist/types/src/pg/table-schema.d.ts +12 -0
- package/dist/types/src/pg/table-schema.d.ts.map +1 -0
- package/package.json +21 -24
- package/src/@types/i-common.ts +39 -0
- package/src/@types/i-config.ts +75 -0
- package/src/{interfaces.ts → @types/i-ms.ts} +29 -86
- package/src/@types/i-pg.ts +67 -0
- package/src/common.ts +26 -0
- package/src/index.ts +104 -42
- package/src/logger-error.ts +11 -0
- package/src/{get-value-for-sql.ts → mssql/get-value-for-sql.ts} +15 -9
- package/src/{db.ts → mssql/pool-ms.ts} +40 -71
- package/src/mssql/query-ms.ts +25 -0
- package/src/{sql.ts → mssql/sql.ts} +56 -59
- package/src/pg/get-merge-sql.ts +60 -0
- package/src/pg/get-update-sql.ts +31 -0
- package/src/pg/insert.ts +118 -0
- package/src/pg/is-table-or-view-exists.ts +21 -0
- package/src/pg/pg-pool.ts +49 -0
- package/src/pg/prepare-value.ts +90 -0
- package/src/pg/query-pg.ts +26 -0
- package/src/pg/table-schema.ts +178 -0
- package/dist/cjs/db.js.map +0 -1
- package/dist/cjs/get-value-for-sql.js.map +0 -1
- package/dist/cjs/index.js +0 -21
- package/dist/cjs/index.js.map +0 -1
- package/dist/cjs/interfaces.js.map +0 -1
- package/dist/cjs/sql.js.map +0 -1
- package/dist/cjs/utils.js.map +0 -1
- package/dist/esm/db.js.map +0 -1
- package/dist/esm/get-value-for-sql.js.map +0 -1
- package/dist/esm/index.js +0 -4
- package/dist/esm/index.js.map +0 -1
- package/dist/esm/interfaces.js +0 -2
- package/dist/esm/interfaces.js.map +0 -1
- package/dist/esm/sql.js.map +0 -1
- package/dist/esm/utils.js.map +0 -1
- package/dist/types/db.d.ts.map +0 -1
- package/dist/types/get-value-for-sql.d.ts +0 -7
- package/dist/types/get-value-for-sql.d.ts.map +0 -1
- package/dist/types/index.d.ts +0 -5
- package/dist/types/index.d.ts.map +0 -1
- package/dist/types/interfaces.d.ts.map +0 -1
- package/dist/types/sql.d.ts.map +0 -1
- package/dist/types/utils.d.ts.map +0 -1
- /package/dist/cjs/{utils.js → src/mssql/utils.js} +0 -0
- /package/dist/esm/{utils.js → src/mssql/utils.js} +0 -0
- /package/dist/types/{utils.d.ts → src/mssql/utils.d.ts} +0 -0
- /package/src/{utils.ts → mssql/utils.ts} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"insert.js","sourceRoot":"","sources":["../../../../src/pg/insert.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
// noinspection SqlResolve
|
|
2
|
+
import { queryPg } from './query-pg';
|
|
3
|
+
const tableOrViewExistenceCache = new Set();
|
|
4
|
+
export const isTableOrViewExistsPg = async (connectionId, schemaOrFullName, tableOrViewNAme) => {
|
|
5
|
+
var _a, _b;
|
|
6
|
+
const entityName = tableOrViewNAme ? `${schemaOrFullName}.${tableOrViewNAme}` : schemaOrFullName;
|
|
7
|
+
if (tableOrViewExistenceCache.has(entityName)) {
|
|
8
|
+
return true;
|
|
9
|
+
}
|
|
10
|
+
const result = await queryPg(connectionId, `SELECT to_regclass('${entityName}') as is_exists`);
|
|
11
|
+
if ((_b = (_a = result === null || result === void 0 ? void 0 : result.rows) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.is_exists) {
|
|
12
|
+
tableOrViewExistenceCache.add(entityName);
|
|
13
|
+
return true;
|
|
14
|
+
}
|
|
15
|
+
return false;
|
|
16
|
+
};
|
|
17
|
+
//# sourceMappingURL=is-table-or-view-exists.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"is-table-or-view-exists.js","sourceRoot":"","sources":["../../../../src/pg/is-table-or-view-exists.ts"],"names":[],"mappings":"AAAA,0BAA0B;AAC1B,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAErC,MAAM,yBAAyB,GAAG,IAAI,GAAG,EAAE,CAAC;AAE5C,MAAM,CAAC,MAAM,qBAAqB,GAAG,KAAK,EACxC,YAAoB,EACpB,gBAAwB,EACxB,eAAwB,EACN,EAAE;;IACpB,MAAM,UAAU,GAAG,eAAe,CAAC,CAAC,CAAC,GAAG,gBAAgB,IAAI,eAAe,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC;IACjG,IAAI,yBAAyB,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE;QAC7C,OAAO,IAAI,CAAC;KACb;IACD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,YAAY,EAAE,uBAAuB,UAAU,iBAAiB,CAAC,CAAC;IAC/F,IAAI,MAAA,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,IAAI,0CAAG,CAAC,CAAC,0CAAE,SAAS,EAAE;QAChC,yBAAyB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAC1C,OAAO,IAAI,CAAC;KACb;IACD,OAAO,KAAK,CAAC;AACf,CAAC,CAAC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import config from 'config';
|
|
2
|
+
import { Pool } from 'pg';
|
|
3
|
+
import { echo } from 'af-echo-ts';
|
|
4
|
+
import { logger } from '../logger-error';
|
|
5
|
+
const pgConfigs = config.get('db.postgres');
|
|
6
|
+
export const poolsCachePg = {};
|
|
7
|
+
export const getPoolPg = async (connectionId) => {
|
|
8
|
+
if (!poolsCachePg[connectionId]) {
|
|
9
|
+
const poolConfig = { ...pgConfigs.options, ...pgConfigs.dbs[connectionId] };
|
|
10
|
+
const pool = new Pool(poolConfig);
|
|
11
|
+
poolsCachePg[connectionId] = pool;
|
|
12
|
+
pool.on('error', (err, client) => {
|
|
13
|
+
client.release(true);
|
|
14
|
+
logger.error(err);
|
|
15
|
+
});
|
|
16
|
+
pool.on('connect', (client) => {
|
|
17
|
+
const { database, processID } = client;
|
|
18
|
+
echo.debug(`PG client [${connectionId}] connected! DB: "${database}" / processID: ${processID}`);
|
|
19
|
+
});
|
|
20
|
+
pool.on('remove', (client) => {
|
|
21
|
+
const { database, processID } = client;
|
|
22
|
+
echo.debug(`PG client [${connectionId}] removed. DB: "${database}" / processID: ${processID}`);
|
|
23
|
+
});
|
|
24
|
+
await pool.connect();
|
|
25
|
+
}
|
|
26
|
+
return poolsCachePg[connectionId];
|
|
27
|
+
};
|
|
28
|
+
export const closePoolPg = async (connectionId) => {
|
|
29
|
+
if (!connectionId) {
|
|
30
|
+
return false;
|
|
31
|
+
}
|
|
32
|
+
const pool = poolsCachePg[connectionId];
|
|
33
|
+
if (!pool) {
|
|
34
|
+
return true;
|
|
35
|
+
}
|
|
36
|
+
const fns = (pool._clients || [])
|
|
37
|
+
.filter((client) => (client === null || client === void 0 ? void 0 : client._connected) && typeof (client === null || client === void 0 ? void 0 : client.end) === 'function')
|
|
38
|
+
.map((client) => client.end());
|
|
39
|
+
await Promise.all(fns);
|
|
40
|
+
return true;
|
|
41
|
+
};
|
|
42
|
+
export const closeAllPgConnectionsPg = async () => Promise.all(Object.keys(poolsCachePg).map((connectionId) => closePoolPg(connectionId)));
|
|
43
|
+
//# sourceMappingURL=pg-pool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pg-pool.js","sourceRoot":"","sources":["../../../../src/pg/pg-pool.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,IAAI,EAA0B,MAAM,IAAI,CAAC;AAClD,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAClC,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAIzC,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAyC,aAAa,CAAC,CAAC;AAEpF,MAAM,CAAC,MAAM,YAAY,GAAuB,EAAE,CAAC;AAEnD,MAAM,CAAC,MAAM,SAAS,GAAG,KAAK,EAAE,YAAoB,EAAoB,EAAE;IACxE,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,EAAE;QAC/B,MAAM,UAAU,GAAe,EAAE,GAAG,SAAS,CAAC,OAAO,EAAE,GAAG,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC;QACxF,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,UAAU,CAAY,CAAC;QAC7C,YAAY,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC;QAClC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAU,EAAE,MAAkB,EAAE,EAAE;YAClD,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACrB,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACpB,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,MAAkB,EAAE,EAAE;YACxC,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,MAAkC,CAAC;YACnE,IAAI,CAAC,KAAK,CAAC,cAAc,YAAY,qBAAqB,QAAQ,kBAAkB,SAAS,EAAE,CAAC,CAAC;QACnG,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,MAAkB,EAAE,EAAE;YACvC,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,MAAkC,CAAC;YACnE,IAAI,CAAC,KAAK,CAAC,cAAc,YAAY,mBAAmB,QAAQ,kBAAkB,SAAS,EAAE,CAAC,CAAC;QACjG,CAAC,CAAC,CAAC;QACH,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;KACtB;IACD,OAAO,YAAY,CAAC,YAAY,CAAC,CAAC;AACpC,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAG,KAAK,EAAE,YAAoB,EAAoB,EAAE;IAC1E,IAAI,CAAC,YAAY,EAAE;QACjB,OAAO,KAAK,CAAC;KACd;IACD,MAAM,IAAI,GAAG,YAAY,CAAC,YAAY,CAAC,CAAC;IACxC,IAAI,CAAC,IAAI,EAAE;QACT,OAAO,IAAI,CAAC;KACb;IACD,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC;SAC9B,MAAM,CAAC,CAAC,MAAqB,EAAE,EAAE,CAAC,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,UAAU,KAAI,OAAO,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,GAAG,CAAA,KAAK,UAAU,CAAC;SAC1F,GAAG,CAAC,CAAC,MAAqB,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;IAChD,MAAM,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACvB,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,uBAAuB,GAAG,KAAK,IAAI,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,YAAY,EAAE,EAAE,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
// noinspection SqlResolve
|
|
2
|
+
import { DateTime } from 'luxon';
|
|
3
|
+
import { EDataTypePg } from '../@types/i-pg';
|
|
4
|
+
const NULL = 'null';
|
|
5
|
+
const utc$ = (millis) => DateTime.fromMillis(millis == null ? Date.now() : millis).setZone('UTC');
|
|
6
|
+
export const prepareSqlStringPg = (s) => {
|
|
7
|
+
s = String(s);
|
|
8
|
+
if (/['\\]|\${2,}/.test(s)) {
|
|
9
|
+
return `$s$${s}$s$`;
|
|
10
|
+
}
|
|
11
|
+
return `'${s}'`;
|
|
12
|
+
};
|
|
13
|
+
export const prepareSqlValuePg = (arg) => {
|
|
14
|
+
const { value, fieldDef } = arg;
|
|
15
|
+
if (value == null && fieldDef.isNullable) {
|
|
16
|
+
return NULL;
|
|
17
|
+
}
|
|
18
|
+
switch (fieldDef.dataType) {
|
|
19
|
+
case EDataTypePg.boolean: {
|
|
20
|
+
return value ? 'true' : 'false';
|
|
21
|
+
}
|
|
22
|
+
case EDataTypePg.bigint: {
|
|
23
|
+
return `'${value}'`;
|
|
24
|
+
}
|
|
25
|
+
case EDataTypePg.numeric:
|
|
26
|
+
case EDataTypePg.real: {
|
|
27
|
+
const v = Number(value);
|
|
28
|
+
return Number.isNaN(v) ? NULL : v;
|
|
29
|
+
}
|
|
30
|
+
case EDataTypePg.integer:
|
|
31
|
+
case EDataTypePg.smallint: {
|
|
32
|
+
const v = Number(value);
|
|
33
|
+
return Number.isNaN(v) ? NULL : Math.floor(v);
|
|
34
|
+
}
|
|
35
|
+
case EDataTypePg.text:
|
|
36
|
+
case EDataTypePg.character:
|
|
37
|
+
case EDataTypePg.varchar:
|
|
38
|
+
case EDataTypePg.uuid: {
|
|
39
|
+
return prepareSqlStringPg(value);
|
|
40
|
+
}
|
|
41
|
+
case EDataTypePg.json:
|
|
42
|
+
case EDataTypePg.jsonb: {
|
|
43
|
+
return prepareSqlStringPg(JSON.stringify(value));
|
|
44
|
+
}
|
|
45
|
+
case EDataTypePg.date:
|
|
46
|
+
case EDataTypePg.timestamp:
|
|
47
|
+
case EDataTypePg.timestamptz: {
|
|
48
|
+
let v = value;
|
|
49
|
+
if (value instanceof Date) {
|
|
50
|
+
v = +value;
|
|
51
|
+
}
|
|
52
|
+
else if (value instanceof DateTime) {
|
|
53
|
+
v = value.toMillis();
|
|
54
|
+
}
|
|
55
|
+
else if (typeof value === 'string') {
|
|
56
|
+
v = DateTime.fromISO(value).toMillis();
|
|
57
|
+
}
|
|
58
|
+
switch (fieldDef.dataType) {
|
|
59
|
+
case EDataTypePg.date: {
|
|
60
|
+
return `'${typeof v === 'number' ? utc$(v).toISODate() : v}'::date`;
|
|
61
|
+
}
|
|
62
|
+
case EDataTypePg.timestamp:
|
|
63
|
+
case EDataTypePg.timestamptz: {
|
|
64
|
+
return `'${typeof v === 'number' ? utc$(v).toISO() : v}'::timestamptz`;
|
|
65
|
+
}
|
|
66
|
+
default:
|
|
67
|
+
return `'${v}'`;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
case EDataTypePg.USER_DEFINED:
|
|
71
|
+
return prepareSqlStringPg(value);
|
|
72
|
+
case EDataTypePg.ARRAY: {
|
|
73
|
+
return prepareSqlStringPg(JSON.stringify(value));
|
|
74
|
+
}
|
|
75
|
+
default:
|
|
76
|
+
return prepareSqlStringPg(value);
|
|
77
|
+
}
|
|
78
|
+
};
|
|
79
|
+
//# sourceMappingURL=prepare-value.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prepare-value.js","sourceRoot":"","sources":["../../../../src/pg/prepare-value.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { getPoolPg } from './pg-pool';
|
|
2
|
+
import { logSqlError } from '../common';
|
|
3
|
+
export const queryPg = async (connectionId, sqlText, sqlValues, throwError, prefix) => {
|
|
4
|
+
const pool = await getPoolPg(connectionId);
|
|
5
|
+
let res;
|
|
6
|
+
try {
|
|
7
|
+
if (Array.isArray(sqlValues)) {
|
|
8
|
+
res = await pool.query(sqlText, sqlValues);
|
|
9
|
+
}
|
|
10
|
+
else {
|
|
11
|
+
res = await pool.query(sqlText);
|
|
12
|
+
}
|
|
13
|
+
return res;
|
|
14
|
+
}
|
|
15
|
+
catch (err) {
|
|
16
|
+
logSqlError(err, !throwError, sqlText, prefix);
|
|
17
|
+
}
|
|
18
|
+
};
|
|
19
|
+
//# sourceMappingURL=query-pg.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query-pg.js","sourceRoot":"","sources":["../../../../src/pg/query-pg.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAGxC,MAAM,CAAC,MAAM,OAAO,GAAG,KAAK,EAC1B,YAAoB,EACpB,OAAe,EACf,SAAiB,EACjB,UAAoB,EACpB,MAAe,EAEqB,EAAE;IACtC,MAAM,IAAI,GAAY,MAAM,SAAS,CAAC,YAAY,CAAC,CAAC;IACpD,IAAI,GAAgB,CAAC;IACrB,IAAI;QACF,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;YAC5B,GAAG,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;SAC5C;aAAM;YACL,GAAG,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;SACjC;QACD,OAAO,GAAG,CAAC;KACZ;IAAC,OAAO,GAAG,EAAE;QACZ,WAAW,CAAC,GAAG,EAAE,CAAC,UAAU,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;KAChD;AACH,CAAC,CAAC"}
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
import { queryPg } from './query-pg';
|
|
2
|
+
import { logger } from '../logger-error';
|
|
3
|
+
import { graceExit } from '../common';
|
|
4
|
+
import { EDataTypePg } from '../@types/i-pg';
|
|
5
|
+
const tableSchemaHash = {};
|
|
6
|
+
const getRecordSchemaMs = async (connectionId, schemaAndTable) => {
|
|
7
|
+
const [schema, table] = schemaAndTable.split('.');
|
|
8
|
+
const sql = `SELECT column_name,
|
|
9
|
+
column_default,
|
|
10
|
+
is_nullable,
|
|
11
|
+
data_type,
|
|
12
|
+
character_maximum_length,
|
|
13
|
+
numeric_precision,
|
|
14
|
+
numeric_precision_radix,
|
|
15
|
+
datetime_precision,
|
|
16
|
+
udt_name,
|
|
17
|
+
is_generated
|
|
18
|
+
FROM information_schema.columns
|
|
19
|
+
WHERE table_name = '${table}'
|
|
20
|
+
AND table_schema = '${schema}';`;
|
|
21
|
+
const result = await queryPg(connectionId, sql);
|
|
22
|
+
const fields = (result === null || result === void 0 ? void 0 : result.rows) || [];
|
|
23
|
+
const recordSchema = {};
|
|
24
|
+
fields.forEach((fieldDef) => {
|
|
25
|
+
const fieldSchema = {
|
|
26
|
+
name: fieldDef.column_name,
|
|
27
|
+
isNullable: /yes/i.test(fieldDef.is_nullable || ''),
|
|
28
|
+
columnDefault: fieldDef.column_default,
|
|
29
|
+
hasDefault: !!fieldDef.column_default,
|
|
30
|
+
dataType: fieldDef.data_type,
|
|
31
|
+
maxLen: fieldDef.character_maximum_length,
|
|
32
|
+
precision: fieldDef.numeric_precision,
|
|
33
|
+
radix: fieldDef.numeric_precision_radix,
|
|
34
|
+
dtPrecision: fieldDef.datetime_precision,
|
|
35
|
+
udtName: fieldDef.udt_name,
|
|
36
|
+
};
|
|
37
|
+
if (fieldDef.is_generated === 'NEVER') {
|
|
38
|
+
Object.entries(fieldSchema).forEach(([prop, value]) => {
|
|
39
|
+
if (value == null) {
|
|
40
|
+
delete fieldSchema[prop];
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
recordSchema[fieldDef.column_name] = fieldSchema;
|
|
44
|
+
}
|
|
45
|
+
});
|
|
46
|
+
return recordSchema;
|
|
47
|
+
};
|
|
48
|
+
const getPrimaryKey = async (connectionId, schemaAndTable) => {
|
|
49
|
+
const result = await queryPg(connectionId, `SELECT a.attname as f
|
|
50
|
+
FROM pg_index i
|
|
51
|
+
JOIN pg_attribute a
|
|
52
|
+
ON a.attrelid = i.indrelid AND a.attnum = ANY (i.indkey)
|
|
53
|
+
WHERE i.indrelid = '${schemaAndTable}'::regclass
|
|
54
|
+
AND i.indisprimary;`);
|
|
55
|
+
return ((result === null || result === void 0 ? void 0 : result.rows) || []).map(({ f }) => f);
|
|
56
|
+
};
|
|
57
|
+
const getUniqueConstraints = async (connectionId, schemaAndTable) => {
|
|
58
|
+
var _a;
|
|
59
|
+
const [schema, table] = schemaAndTable.split('.');
|
|
60
|
+
const result = await queryPg(connectionId, `
|
|
61
|
+
SELECT UI.cn as cn, UI.cols as cols, CASE WHEN UC.cn IS NULL THEN 'UX' ELSE 'UC' END AS typ
|
|
62
|
+
FROM (SELECT c.relname as cn, array_to_json(array_agg(a.attname ORDER BY a.attname)) AS cols
|
|
63
|
+
FROM pg_index i
|
|
64
|
+
JOIN pg_attribute a ON a.attrelid = i.indrelid AND a.attnum = ANY (i.indkey)
|
|
65
|
+
JOIN pg_class AS c ON c.oid = i.indexrelid
|
|
66
|
+
WHERE i.indrelid = '${schemaAndTable}'::regclass
|
|
67
|
+
AND i.indisunique
|
|
68
|
+
AND NOT i.indisprimary
|
|
69
|
+
GROUP BY c.relname) AS UI
|
|
70
|
+
LEFT OUTER JOIN (SELECT ccu.constraint_name AS cn
|
|
71
|
+
FROM information_schema.table_constraints tc
|
|
72
|
+
JOIN information_schema.constraint_column_usage AS ccu USING (constraint_schema, constraint_name)
|
|
73
|
+
JOIN information_schema.columns AS c ON c.table_schema = tc.constraint_schema
|
|
74
|
+
AND tc.table_name = c.table_name AND ccu.column_name = c.column_name
|
|
75
|
+
WHERE tc.table_schema = '${schema}'
|
|
76
|
+
AND tc.table_name = '${table}'
|
|
77
|
+
AND constraint_type = 'UNIQUE'
|
|
78
|
+
GROUP BY ccu.constraint_name) AS UC ON UC.cn = UI.cn
|
|
79
|
+
ORDER BY CASE WHEN UC.cn IS NULL THEN 2 ELSE 1 END
|
|
80
|
+
`);
|
|
81
|
+
const uc = {};
|
|
82
|
+
(_a = result === null || result === void 0 ? void 0 : result.rows) === null || _a === void 0 ? void 0 : _a.forEach(({ cn, cols }) => {
|
|
83
|
+
uc[cn] = cols;
|
|
84
|
+
});
|
|
85
|
+
return uc;
|
|
86
|
+
};
|
|
87
|
+
const getSerials = async (connectionId, schemaAndTable) => {
|
|
88
|
+
var _a, _b;
|
|
89
|
+
const result = await queryPg(connectionId, `
|
|
90
|
+
WITH fq_objects AS (SELECT c.oid,
|
|
91
|
+
n.nspname || '.' || c.relname AS fqname,
|
|
92
|
+
c.relkind,
|
|
93
|
+
c.relname AS relation
|
|
94
|
+
FROM pg_class c
|
|
95
|
+
JOIN pg_namespace n ON n.oid = c.relnamespace),
|
|
96
|
+
sequences AS (SELECT oid, fqname FROM fq_objects WHERE relkind = 'S'),
|
|
97
|
+
tables AS (SELECT oid, fqname FROM fq_objects WHERE relkind = 'r')
|
|
98
|
+
SELECT t.fqname AS tbl, array_to_json(array_agg(a.attname ORDER BY a.attname)) AS cols
|
|
99
|
+
FROM pg_depend d
|
|
100
|
+
JOIN sequences s ON s.oid = d.objid
|
|
101
|
+
JOIN tables t ON t.oid = d.refobjid
|
|
102
|
+
JOIN pg_attribute a ON a.attrelid = d.refobjid and a.attnum = d.refobjsubid
|
|
103
|
+
WHERE d.deptype = 'a'
|
|
104
|
+
AND t.fqname = '${schemaAndTable}'
|
|
105
|
+
GROUP BY t.fqname
|
|
106
|
+
`);
|
|
107
|
+
return ((_b = (_a = result === null || result === void 0 ? void 0 : result.rows) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.cols) || [];
|
|
108
|
+
};
|
|
109
|
+
export const getTableSchemaPg = async (connectionId, schemaAndTable) => {
|
|
110
|
+
let tableSchema = tableSchemaHash[schemaAndTable];
|
|
111
|
+
if (tableSchema) {
|
|
112
|
+
return tableSchema;
|
|
113
|
+
}
|
|
114
|
+
try {
|
|
115
|
+
const recordSchema = await getRecordSchemaMs(connectionId, schemaAndTable);
|
|
116
|
+
const pk = await getPrimaryKey(connectionId, schemaAndTable);
|
|
117
|
+
const uc = await getUniqueConstraints(connectionId, schemaAndTable);
|
|
118
|
+
const serials = await getSerials(connectionId, schemaAndTable);
|
|
119
|
+
const defaults = {};
|
|
120
|
+
Object.values(recordSchema).forEach((fieldDef) => {
|
|
121
|
+
const { name: f, columnDefault, hasDefault } = fieldDef;
|
|
122
|
+
if (hasDefault && !serials.includes(f)) {
|
|
123
|
+
defaults[f] = `${columnDefault}`;
|
|
124
|
+
}
|
|
125
|
+
});
|
|
126
|
+
const fieldsList = Object.keys(recordSchema);
|
|
127
|
+
const fieldsWoSerials = fieldsList.filter((fieldName) => !serials.includes(fieldName));
|
|
128
|
+
tableSchema = {
|
|
129
|
+
recordSchema, pk, uc, defaults, serials, fieldsList, fieldsWoSerials,
|
|
130
|
+
};
|
|
131
|
+
tableSchemaHash[schemaAndTable] = tableSchema;
|
|
132
|
+
}
|
|
133
|
+
catch (err) {
|
|
134
|
+
logger.error(`Failed to get schema for table ${schemaAndTable}`);
|
|
135
|
+
logger.error(err);
|
|
136
|
+
await graceExit();
|
|
137
|
+
}
|
|
138
|
+
return tableSchema;
|
|
139
|
+
};
|
|
140
|
+
export const getFieldsAndValuesPg = (record, recordSchema) => {
|
|
141
|
+
const recordNormalized = {};
|
|
142
|
+
Object.entries(record).forEach(([f, v]) => {
|
|
143
|
+
const { dataType } = recordSchema[f] || {};
|
|
144
|
+
if (!dataType) {
|
|
145
|
+
return;
|
|
146
|
+
}
|
|
147
|
+
if ((dataType === EDataTypePg.jsonb || dataType === EDataTypePg.json) && Array.isArray(v)) {
|
|
148
|
+
recordNormalized[f] = JSON.stringify(v);
|
|
149
|
+
}
|
|
150
|
+
else {
|
|
151
|
+
recordNormalized[f] = v;
|
|
152
|
+
}
|
|
153
|
+
});
|
|
154
|
+
const fields = Object.keys(recordNormalized);
|
|
155
|
+
const fieldsList = fields.join(', ');
|
|
156
|
+
const values = Object.values(recordNormalized);
|
|
157
|
+
const positionsList = fields.map((__, i) => `$${++i}`).join(', ');
|
|
158
|
+
const setFields = fields.map((f, i) => `${f} = $${++i}`).join(', ');
|
|
159
|
+
const upsertFields = fields.map((f) => `${f} = EXCLUDED.${f}`).join(',\n');
|
|
160
|
+
return {
|
|
161
|
+
fields, fieldsList, values, positionsList, setFields, upsertFields,
|
|
162
|
+
};
|
|
163
|
+
};
|
|
164
|
+
//# sourceMappingURL=table-schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"table-schema.js","sourceRoot":"","sources":["../../../../src/pg/table-schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { DateTimeOptions } from 'luxon';
|
|
2
|
+
export type IDialect = 'mssql' | 'pg';
|
|
3
|
+
/**
|
|
4
|
+
* Имя поля БД
|
|
5
|
+
*/
|
|
6
|
+
export type TFieldName = string;
|
|
7
|
+
/**
|
|
8
|
+
* Значение ключевого поля записи БД
|
|
9
|
+
*/
|
|
10
|
+
export type TRecordKey = string | number;
|
|
11
|
+
/**
|
|
12
|
+
* Запись БД. Объект, проиндексированный именами полей. Значения - значения полей
|
|
13
|
+
*/
|
|
14
|
+
export interface TDBRecord {
|
|
15
|
+
[fieldName: TFieldName]: any;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Массив записей БД
|
|
19
|
+
*
|
|
20
|
+
* _isPreparedForSQL - Признак того, что значения полей подготовлены для использования в строке SQL
|
|
21
|
+
*/
|
|
22
|
+
export type TRecordSet = TDBRecord[] & {
|
|
23
|
+
_isPreparedForSQL?: boolean;
|
|
24
|
+
};
|
|
25
|
+
/**
|
|
26
|
+
* Пакет записей БД.
|
|
27
|
+
* Объект, проиндексированный алиасами. Каждый подобъект содержит TDBRecord.
|
|
28
|
+
*/
|
|
29
|
+
export interface TRecordSetAssoc {
|
|
30
|
+
[recordKey: TRecordKey]: TDBRecord;
|
|
31
|
+
}
|
|
32
|
+
export interface IDateTimeOptionsEx extends DateTimeOptions {
|
|
33
|
+
correctionMillis?: number;
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=i-common.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"i-common.d.ts","sourceRoot":"","sources":["../../../../src/@types/i-common.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,OAAO,CAAC;AAExC,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,IAAI,CAAC;AAEtC;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC;AAEhC;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,MAAM,CAAC;AAEzC;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,CAAC,SAAS,EAAE,UAAU,GAAG,GAAG,CAAA;CAC7B;AAED;;;;GAIG;AACH,MAAM,MAAM,UAAU,GAAG,SAAS,EAAE,GAAG;IAAE,iBAAiB,CAAC,EAAE,OAAO,CAAA;CAAE,CAAA;AAEtE;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,CAAC,SAAS,EAAE,UAAU,GAAG,SAAS,CAAA;CACnC;AAED,MAAM,WAAW,kBAAmB,SAAQ,eAAe;IACzD,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
export interface IDBConfigCommon {
|
|
2
|
+
dialect?: 'mssql' | 'pg';
|
|
3
|
+
port: string | number | null | undefined;
|
|
4
|
+
database: string;
|
|
5
|
+
user: string;
|
|
6
|
+
password: string;
|
|
7
|
+
}
|
|
8
|
+
export interface IDBConfigMs extends IDBConfigCommon {
|
|
9
|
+
server: string;
|
|
10
|
+
}
|
|
11
|
+
export interface IDBConfigPg extends IDBConfigCommon {
|
|
12
|
+
host: string;
|
|
13
|
+
port: number;
|
|
14
|
+
}
|
|
15
|
+
export interface IDbOptionsMs {
|
|
16
|
+
options: {
|
|
17
|
+
enableArithAbort: boolean;
|
|
18
|
+
};
|
|
19
|
+
pool: {
|
|
20
|
+
max: number;
|
|
21
|
+
min: number;
|
|
22
|
+
idleTimeoutMillis: number;
|
|
23
|
+
acquireTimeoutMillis?: number;
|
|
24
|
+
createTimeoutMillis?: number;
|
|
25
|
+
destroyTimeoutMillis?: number;
|
|
26
|
+
reapIntervalMillis?: number;
|
|
27
|
+
createRetryIntervalMillis?: number;
|
|
28
|
+
};
|
|
29
|
+
trustServerCertificate: boolean;
|
|
30
|
+
stream: boolean;
|
|
31
|
+
parseJSON: boolean;
|
|
32
|
+
requestTimeout: number;
|
|
33
|
+
connectionTimeout: number;
|
|
34
|
+
}
|
|
35
|
+
export interface IDbOptionsPg {
|
|
36
|
+
connectionTimeoutMillis: number;
|
|
37
|
+
idleTimeoutMillis: number;
|
|
38
|
+
max: 10;
|
|
39
|
+
statement_timeout: number;
|
|
40
|
+
query_timeout: number;
|
|
41
|
+
}
|
|
42
|
+
export interface IDbsMs {
|
|
43
|
+
[dbId: string]: IDBConfigMs;
|
|
44
|
+
}
|
|
45
|
+
export interface IDbsPg {
|
|
46
|
+
[dbId: string]: IDBConfigPg;
|
|
47
|
+
}
|
|
48
|
+
export interface IAFDatabasesConfig {
|
|
49
|
+
db: {
|
|
50
|
+
mssql: {
|
|
51
|
+
options: IDbOptionsMs;
|
|
52
|
+
dbs: IDbsMs;
|
|
53
|
+
};
|
|
54
|
+
postgres: {
|
|
55
|
+
options: IDbOptionsPg;
|
|
56
|
+
dbs: IDbsPg;
|
|
57
|
+
};
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=i-config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"i-config.d.ts","sourceRoot":"","sources":["../../../../src/@types/i-config.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,eAAe;IAC9B,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IACzB,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IACzC,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,WAAY,SAAQ,eAAe;IAClD,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,WAAY,SAAQ,eAAe;IAClD,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE;QACP,gBAAgB,EAAE,OAAO,CAAA;KAC1B,CAAC;IACF,IAAI,EAAE;QACJ,GAAG,EAAE,MAAM,CAAC;QACZ,GAAG,EAAE,MAAM,CAAC;QACZ,iBAAiB,EAAE,MAAM,CAAA;QACzB,oBAAoB,CAAC,EAAE,MAAM,CAAC;QAC9B,mBAAmB,CAAC,EAAE,MAAM,CAAC;QAC7B,oBAAoB,CAAC,EAAE,MAAM,CAAC;QAC9B,kBAAkB,CAAC,EAAE,MAAM,CAAC;QAC5B,yBAAyB,CAAC,EAAE,MAAM,CAAC;KACpC,CAAC;IACF,sBAAsB,EAAE,OAAO,CAAC;IAChC,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;IACnB,cAAc,EAAE,MAAM,CAAA;IACtB,iBAAiB,EAAE,MAAM,CAAA;CAC1B;AAED,MAAM,WAAW,YAAY;IAK3B,uBAAuB,EAAE,MAAM,CAAC;IAIhC,iBAAiB,EAAE,MAAM,CAAC;IAG1B,GAAG,EAAE,EAAE,CAAC;IACR,iBAAiB,EAAE,MAAM,CAAC;IAC1B,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,MAAM;IACrB,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;CAC7B;AAED,MAAM,WAAW,MAAM;IACrB,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;CAC7B;AAED,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE;QACF,KAAK,EAAE;YACL,OAAO,EAAE,YAAY,CAAC;YACtB,GAAG,EAAE,MAAM,CAAC;SACb,CAAC;QACF,QAAQ,EAAE;YACR,OAAO,EAAE,YAAY,CAAC;YACtB,GAAG,EAAE,MAAM,CAAC;SACb,CAAC;KACH,CAAC;CACH"}
|