@payloadcms/db-postgres 0.1.0-beta.0
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/connect.js +82 -0
- package/dist/create.js +32 -0
- package/dist/createGlobal.js +32 -0
- package/dist/createGlobalVersion.js +48 -0
- package/dist/createMigration.js +85 -0
- package/dist/createVersion.js +54 -0
- package/dist/deleteMany.js +44 -0
- package/dist/deleteOne.js +47 -0
- package/dist/deleteVersions.js +46 -0
- package/dist/destroy.js +16 -0
- package/dist/find/buildFindManyArgs.js +61 -0
- package/dist/find/chainMethods.js +21 -0
- package/dist/find/findMany.js +197 -0
- package/dist/find/traverseFields.js +118 -0
- package/dist/find.js +35 -0
- package/dist/findGlobal.js +38 -0
- package/dist/findGlobalVersions.js +39 -0
- package/dist/findOne.js +49 -0
- package/dist/findVersions.js +39 -0
- package/dist/index.js +95 -0
- package/dist/init.js +74 -0
- package/dist/migrate.js +81 -0
- package/dist/migrateStatus.js +54 -0
- package/dist/mock.js +13 -0
- package/dist/queries/buildAndOrConditions.js +39 -0
- package/dist/queries/buildQuery.js +80 -0
- package/dist/queries/createJSONQuery/convertPathToJSONTraversal.js +24 -0
- package/dist/queries/createJSONQuery/formatJSONPathSegment.js +15 -0
- package/dist/queries/createJSONQuery/index.js +64 -0
- package/dist/queries/getTableColumnFromPath.js +333 -0
- package/dist/queries/operatorMap.js +34 -0
- package/dist/queries/parseParams.js +146 -0
- package/dist/queries/sanitizeQueryValue.js +79 -0
- package/dist/queryDrafts.js +56 -0
- package/dist/reference.js +76 -0
- package/dist/schema/build.js +245 -0
- package/dist/schema/createIndex.js +19 -0
- package/dist/schema/parentIDColumnMap.js +18 -0
- package/dist/schema/traverseFields.js +430 -0
- package/dist/schema/validateExistingBlockIsIdentical.js +34 -0
- package/dist/transactions/beginTransaction.js +51 -0
- package/dist/transactions/commitTransaction.js +24 -0
- package/dist/transactions/rollbackTransaction.js +20 -0
- package/dist/transform/read/hasManyNumber.js +20 -0
- package/dist/transform/read/index.js +42 -0
- package/dist/transform/read/relationship.js +74 -0
- package/dist/transform/read/traverseFields.js +325 -0
- package/dist/transform/write/array.js +55 -0
- package/dist/transform/write/blocks.js +56 -0
- package/dist/transform/write/index.js +46 -0
- package/dist/transform/write/numbers.js +21 -0
- package/dist/transform/write/relationships.js +33 -0
- package/dist/transform/write/selects.js +29 -0
- package/dist/transform/write/traverseFields.js +379 -0
- package/dist/transform/write/types.js +6 -0
- package/dist/types.js +6 -0
- package/dist/update.js +48 -0
- package/dist/updateGlobal.js +39 -0
- package/dist/updateGlobalVersion.js +50 -0
- package/dist/updateVersion.js +50 -0
- package/dist/upsertRow/deleteExistingArrayRows.js +20 -0
- package/dist/upsertRow/deleteExistingRowsByPath.js +43 -0
- package/dist/upsertRow/index.js +243 -0
- package/dist/upsertRow/insertArrays.js +64 -0
- package/dist/upsertRow/types.js +6 -0
- package/dist/utilities/appendPrefixToKeys.js +16 -0
- package/dist/utilities/createBlocksMap.js +39 -0
- package/dist/utilities/createMigrationTable.js +23 -0
- package/dist/utilities/createRelationshipMap.js +29 -0
- package/dist/utilities/hasLocalesTable.js +21 -0
- package/dist/utilities/isArrayOfRows.js +15 -0
- package/dist/utilities/migrationTableExists.js +19 -0
- package/dist/webpack.js +30 -0
- package/package.json +47 -0
package/dist/update.js
ADDED
@@ -0,0 +1,48 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
3
|
+
value: true
|
4
|
+
});
|
5
|
+
Object.defineProperty(exports, "updateOne", {
|
6
|
+
enumerable: true,
|
7
|
+
get: function() {
|
8
|
+
return updateOne;
|
9
|
+
}
|
10
|
+
});
|
11
|
+
const _tosnakecase = /*#__PURE__*/ _interop_require_default(require("to-snake-case"));
|
12
|
+
const _buildQuery = /*#__PURE__*/ _interop_require_default(require("./queries/buildQuery"));
|
13
|
+
const _upsertRow = require("./upsertRow");
|
14
|
+
function _interop_require_default(obj) {
|
15
|
+
return obj && obj.__esModule ? obj : {
|
16
|
+
default: obj
|
17
|
+
};
|
18
|
+
}
|
19
|
+
const updateOne = async function updateOne({ id, collection: collectionSlug, data, draft, locale, req, where: whereArg }) {
|
20
|
+
const db = this.sessions[req.transactionID]?.db || this.db;
|
21
|
+
const collection = this.payload.collections[collectionSlug].config;
|
22
|
+
const tableName = (0, _tosnakecase.default)(collectionSlug);
|
23
|
+
const whereToUse = whereArg || {
|
24
|
+
id: {
|
25
|
+
equals: id
|
26
|
+
}
|
27
|
+
};
|
28
|
+
const { where } = await (0, _buildQuery.default)({
|
29
|
+
adapter: this,
|
30
|
+
fields: collection.fields,
|
31
|
+
locale,
|
32
|
+
tableName,
|
33
|
+
where: whereToUse
|
34
|
+
});
|
35
|
+
const result = await (0, _upsertRow.upsertRow)({
|
36
|
+
id,
|
37
|
+
adapter: this,
|
38
|
+
data,
|
39
|
+
db,
|
40
|
+
fields: collection.fields,
|
41
|
+
operation: 'update',
|
42
|
+
tableName: (0, _tosnakecase.default)(collectionSlug),
|
43
|
+
where
|
44
|
+
});
|
45
|
+
return result;
|
46
|
+
};
|
47
|
+
|
48
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy91cGRhdGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBVcGRhdGVPbmUgfSBmcm9tICdwYXlsb2FkL2RhdGFiYXNlJ1xuXG5pbXBvcnQgdG9TbmFrZUNhc2UgZnJvbSAndG8tc25ha2UtY2FzZSdcblxuaW1wb3J0IHR5cGUgeyBQb3N0Z3Jlc0FkYXB0ZXIgfSBmcm9tICcuL3R5cGVzJ1xuXG5pbXBvcnQgYnVpbGRRdWVyeSBmcm9tICcuL3F1ZXJpZXMvYnVpbGRRdWVyeSdcbmltcG9ydCB7IHVwc2VydFJvdyB9IGZyb20gJy4vdXBzZXJ0Um93J1xuXG5leHBvcnQgY29uc3QgdXBkYXRlT25lOiBVcGRhdGVPbmUgPSBhc3luYyBmdW5jdGlvbiB1cGRhdGVPbmUgKFxuICB0aGlzOiBQb3N0Z3Jlc0FkYXB0ZXIsXG4gIHsgaWQsIGNvbGxlY3Rpb246IGNvbGxlY3Rpb25TbHVnLCBkYXRhLCBkcmFmdCwgbG9jYWxlLCByZXEsIHdoZXJlOiB3aGVyZUFyZyB9LFxuKSB7XG4gIGNvbnN0IGRiID0gdGhpcy5zZXNzaW9uc1tyZXEudHJhbnNhY3Rpb25JRF0/LmRiIHx8IHRoaXMuZGJcbiAgY29uc3QgY29sbGVjdGlvbiA9IHRoaXMucGF5bG9hZC5jb2xsZWN0aW9uc1tjb2xsZWN0aW9uU2x1Z10uY29uZmlnXG4gIGNvbnN0IHRhYmxlTmFtZSA9IHRvU25ha2VDYXNlKGNvbGxlY3Rpb25TbHVnKVxuICBjb25zdCB3aGVyZVRvVXNlID0gd2hlcmVBcmcgfHwgeyBpZDogeyBlcXVhbHM6IGlkIH0gfVxuXG4gIGNvbnN0IHsgd2hlcmUgfSA9IGF3YWl0IGJ1aWxkUXVlcnkoe1xuICAgIGFkYXB0ZXI6IHRoaXMsXG4gICAgZmllbGRzOiBjb2xsZWN0aW9uLmZpZWxkcyxcbiAgICBsb2NhbGUsXG4gICAgdGFibGVOYW1lLFxuICAgIHdoZXJlOiB3aGVyZVRvVXNlLFxuICB9KVxuXG4gIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHVwc2VydFJvdyh7XG4gICAgaWQsXG4gICAgYWRhcHRlcjogdGhpcyxcbiAgICBkYXRhLFxuICAgIGRiLFxuICAgIGZpZWxkczogY29sbGVjdGlvbi5maWVsZHMsXG4gICAgb3BlcmF0aW9uOiAndXBkYXRlJyxcbiAgICB0YWJsZU5hbWU6IHRvU25ha2VDYXNlKGNvbGxlY3Rpb25TbHVnKSxcbiAgICB3aGVyZSxcbiAgfSlcblxuICByZXR1cm4gcmVzdWx0XG59XG4iXSwibmFtZXMiOlsidXBkYXRlT25lIiwiaWQiLCJjb2xsZWN0aW9uIiwiY29sbGVjdGlvblNsdWciLCJkYXRhIiwiZHJhZnQiLCJsb2NhbGUiLCJyZXEiLCJ3aGVyZSIsIndoZXJlQXJnIiwiZGIiLCJzZXNzaW9ucyIsInRyYW5zYWN0aW9uSUQiLCJwYXlsb2FkIiwiY29sbGVjdGlvbnMiLCJjb25maWciLCJ0YWJsZU5hbWUiLCJ0b1NuYWtlQ2FzZSIsIndoZXJlVG9Vc2UiLCJlcXVhbHMiLCJidWlsZFF1ZXJ5IiwiYWRhcHRlciIsImZpZWxkcyIsInJlc3VsdCIsInVwc2VydFJvdyIsIm9wZXJhdGlvbiJdLCJtYXBwaW5ncyI6Ijs7OzsrQkFTYUE7OztlQUFBQTs7O29FQVBXO21FQUlEOzJCQUNHOzs7Ozs7QUFFbkIsTUFBTUEsWUFBdUIsZUFBZUEsVUFFakQsRUFBRUMsRUFBRSxFQUFFQyxZQUFZQyxjQUFjLEVBQUVDLElBQUksRUFBRUMsS0FBSyxFQUFFQyxNQUFNLEVBQUVDLEdBQUcsRUFBRUMsT0FBT0MsUUFBUSxFQUFFO0lBRTdFLE1BQU1DLEtBQUssSUFBSSxDQUFDQyxRQUFRLENBQUNKLElBQUlLLGFBQWEsQ0FBQyxFQUFFRixNQUFNLElBQUksQ0FBQ0EsRUFBRTtJQUMxRCxNQUFNUixhQUFhLElBQUksQ0FBQ1csT0FBTyxDQUFDQyxXQUFXLENBQUNYLGVBQWUsQ0FBQ1ksTUFBTTtJQUNsRSxNQUFNQyxZQUFZQyxJQUFBQSxvQkFBVyxFQUFDZDtJQUM5QixNQUFNZSxhQUFhVCxZQUFZO1FBQUVSLElBQUk7WUFBRWtCLFFBQVFsQjtRQUFHO0lBQUU7SUFFcEQsTUFBTSxFQUFFTyxLQUFLLEVBQUUsR0FBRyxNQUFNWSxJQUFBQSxtQkFBVSxFQUFDO1FBQ2pDQyxTQUFTLElBQUk7UUFDYkMsUUFBUXBCLFdBQVdvQixNQUFNO1FBQ3pCaEI7UUFDQVU7UUFDQVIsT0FBT1U7SUFDVDtJQUVBLE1BQU1LLFNBQVMsTUFBTUMsSUFBQUEsb0JBQVMsRUFBQztRQUM3QnZCO1FBQ0FvQixTQUFTLElBQUk7UUFDYmpCO1FBQ0FNO1FBQ0FZLFFBQVFwQixXQUFXb0IsTUFBTTtRQUN6QkcsV0FBVztRQUNYVCxXQUFXQyxJQUFBQSxvQkFBVyxFQUFDZDtRQUN2Qks7SUFDRjtJQUVBLE9BQU9lO0FBQ1QifQ==
|
@@ -0,0 +1,39 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
3
|
+
value: true
|
4
|
+
});
|
5
|
+
Object.defineProperty(exports, "updateGlobal", {
|
6
|
+
enumerable: true,
|
7
|
+
get: function() {
|
8
|
+
return updateGlobal;
|
9
|
+
}
|
10
|
+
});
|
11
|
+
const _tosnakecase = /*#__PURE__*/ _interop_require_default(require("to-snake-case"));
|
12
|
+
const _upsertRow = require("./upsertRow");
|
13
|
+
function _interop_require_default(obj) {
|
14
|
+
return obj && obj.__esModule ? obj : {
|
15
|
+
default: obj
|
16
|
+
};
|
17
|
+
}
|
18
|
+
async function updateGlobal({ data, req = {}, slug }) {
|
19
|
+
const db = this.sessions[req.transactionID]?.db || this.db;
|
20
|
+
const globalConfig = this.payload.globals.config.find((config)=>config.slug === slug);
|
21
|
+
const tableName = (0, _tosnakecase.default)(slug);
|
22
|
+
const existingGlobal = await db.query[tableName].findFirst({});
|
23
|
+
const result = await (0, _upsertRow.upsertRow)({
|
24
|
+
...existingGlobal ? {
|
25
|
+
id: existingGlobal.id,
|
26
|
+
operation: 'update'
|
27
|
+
} : {
|
28
|
+
operation: 'create'
|
29
|
+
},
|
30
|
+
adapter: this,
|
31
|
+
data,
|
32
|
+
db,
|
33
|
+
fields: globalConfig.fields,
|
34
|
+
tableName
|
35
|
+
});
|
36
|
+
return result;
|
37
|
+
}
|
38
|
+
|
39
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy91cGRhdGVHbG9iYWwudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBVcGRhdGVHbG9iYWxBcmdzIH0gZnJvbSAncGF5bG9hZC9kYXRhYmFzZSdcbmltcG9ydCB0eXBlIHsgUGF5bG9hZFJlcXVlc3QsIFR5cGVXaXRoSUQgfSBmcm9tICdwYXlsb2FkL3R5cGVzJ1xuXG5pbXBvcnQgdG9TbmFrZUNhc2UgZnJvbSAndG8tc25ha2UtY2FzZSdcblxuaW1wb3J0IHR5cGUgeyBQb3N0Z3Jlc0FkYXB0ZXIgfSBmcm9tICcuL3R5cGVzJ1xuXG5pbXBvcnQgeyB1cHNlcnRSb3cgfSBmcm9tICcuL3Vwc2VydFJvdydcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHVwZGF0ZUdsb2JhbDxUIGV4dGVuZHMgVHlwZVdpdGhJRD4oXG4gIHRoaXM6IFBvc3RncmVzQWRhcHRlcixcbiAgeyBkYXRhLCByZXEgPSB7fSBhcyBQYXlsb2FkUmVxdWVzdCwgc2x1ZyB9OiBVcGRhdGVHbG9iYWxBcmdzLFxuKTogUHJvbWlzZTxUPiB7XG4gIGNvbnN0IGRiID0gdGhpcy5zZXNzaW9uc1tyZXEudHJhbnNhY3Rpb25JRF0/LmRiIHx8IHRoaXMuZGJcbiAgY29uc3QgZ2xvYmFsQ29uZmlnID0gdGhpcy5wYXlsb2FkLmdsb2JhbHMuY29uZmlnLmZpbmQoKGNvbmZpZykgPT4gY29uZmlnLnNsdWcgPT09IHNsdWcpXG4gIGNvbnN0IHRhYmxlTmFtZSA9IHRvU25ha2VDYXNlKHNsdWcpXG5cbiAgY29uc3QgZXhpc3RpbmdHbG9iYWwgPSBhd2FpdCBkYi5xdWVyeVt0YWJsZU5hbWVdLmZpbmRGaXJzdCh7fSlcblxuICBjb25zdCByZXN1bHQgPSBhd2FpdCB1cHNlcnRSb3c8VD4oe1xuICAgIC4uLihleGlzdGluZ0dsb2JhbCA/IHsgaWQ6IGV4aXN0aW5nR2xvYmFsLmlkLCBvcGVyYXRpb246ICd1cGRhdGUnIH0gOiB7IG9wZXJhdGlvbjogJ2NyZWF0ZScgfSksXG4gICAgYWRhcHRlcjogdGhpcyxcbiAgICBkYXRhLFxuICAgIGRiLFxuICAgIGZpZWxkczogZ2xvYmFsQ29uZmlnLmZpZWxkcyxcbiAgICB0YWJsZU5hbWUsXG4gIH0pXG5cbiAgcmV0dXJuIHJlc3VsdFxufVxuIl0sIm5hbWVzIjpbInVwZGF0ZUdsb2JhbCIsImRhdGEiLCJyZXEiLCJzbHVnIiwiZGIiLCJzZXNzaW9ucyIsInRyYW5zYWN0aW9uSUQiLCJnbG9iYWxDb25maWciLCJwYXlsb2FkIiwiZ2xvYmFscyIsImNvbmZpZyIsImZpbmQiLCJ0YWJsZU5hbWUiLCJ0b1NuYWtlQ2FzZSIsImV4aXN0aW5nR2xvYmFsIiwicXVlcnkiLCJmaW5kRmlyc3QiLCJyZXN1bHQiLCJ1cHNlcnRSb3ciLCJpZCIsIm9wZXJhdGlvbiIsImFkYXB0ZXIiLCJmaWVsZHMiXSwibWFwcGluZ3MiOiI7Ozs7K0JBU3NCQTs7O2VBQUFBOzs7b0VBTkU7MkJBSUU7Ozs7OztBQUVuQixlQUFlQSxhQUVwQixFQUFFQyxJQUFJLEVBQUVDLE1BQU0sQ0FBQyxDQUFtQixFQUFFQyxJQUFJLEVBQW9CO0lBRTVELE1BQU1DLEtBQUssSUFBSSxDQUFDQyxRQUFRLENBQUNILElBQUlJLGFBQWEsQ0FBQyxFQUFFRixNQUFNLElBQUksQ0FBQ0EsRUFBRTtJQUMxRCxNQUFNRyxlQUFlLElBQUksQ0FBQ0MsT0FBTyxDQUFDQyxPQUFPLENBQUNDLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDLENBQUNELFNBQVdBLE9BQU9QLElBQUksS0FBS0E7SUFDbEYsTUFBTVMsWUFBWUMsSUFBQUEsb0JBQVcsRUFBQ1Y7SUFFOUIsTUFBTVcsaUJBQWlCLE1BQU1WLEdBQUdXLEtBQUssQ0FBQ0gsVUFBVSxDQUFDSSxTQUFTLENBQUMsQ0FBQztJQUU1RCxNQUFNQyxTQUFTLE1BQU1DLElBQUFBLG9CQUFTLEVBQUk7UUFDaEMsR0FBSUosaUJBQWlCO1lBQUVLLElBQUlMLGVBQWVLLEVBQUU7WUFBRUMsV0FBVztRQUFTLElBQUk7WUFBRUEsV0FBVztRQUFTLENBQUM7UUFDN0ZDLFNBQVMsSUFBSTtRQUNicEI7UUFDQUc7UUFDQWtCLFFBQVFmLGFBQWFlLE1BQU07UUFDM0JWO0lBQ0Y7SUFFQSxPQUFPSztBQUNUIn0=
|
@@ -0,0 +1,50 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
3
|
+
value: true
|
4
|
+
});
|
5
|
+
Object.defineProperty(exports, "updateGlobalVersion", {
|
6
|
+
enumerable: true,
|
7
|
+
get: function() {
|
8
|
+
return updateGlobalVersion;
|
9
|
+
}
|
10
|
+
});
|
11
|
+
const _versions = require("payload/versions");
|
12
|
+
const _tosnakecase = /*#__PURE__*/ _interop_require_default(require("to-snake-case"));
|
13
|
+
const _buildQuery = /*#__PURE__*/ _interop_require_default(require("./queries/buildQuery"));
|
14
|
+
const _upsertRow = require("./upsertRow");
|
15
|
+
function _interop_require_default(obj) {
|
16
|
+
return obj && obj.__esModule ? obj : {
|
17
|
+
default: obj
|
18
|
+
};
|
19
|
+
}
|
20
|
+
async function updateGlobalVersion({ id, global, locale, req = {}, versionData, where: whereArg }) {
|
21
|
+
const db = this.sessions[req.transactionID]?.db || this.db;
|
22
|
+
const globalConfig = this.payload.globals.config.find(({ slug })=>slug === global);
|
23
|
+
const whereToUse = whereArg || {
|
24
|
+
id: {
|
25
|
+
equals: id
|
26
|
+
}
|
27
|
+
};
|
28
|
+
const tableName = `_${(0, _tosnakecase.default)(global)}_v`;
|
29
|
+
const fields = (0, _versions.buildVersionGlobalFields)(globalConfig);
|
30
|
+
const { where } = await (0, _buildQuery.default)({
|
31
|
+
adapter: this,
|
32
|
+
fields,
|
33
|
+
locale,
|
34
|
+
tableName,
|
35
|
+
where: whereToUse
|
36
|
+
});
|
37
|
+
const result = await (0, _upsertRow.upsertRow)({
|
38
|
+
id,
|
39
|
+
adapter: this,
|
40
|
+
data: versionData,
|
41
|
+
db,
|
42
|
+
fields,
|
43
|
+
operation: 'update',
|
44
|
+
tableName,
|
45
|
+
where
|
46
|
+
});
|
47
|
+
return result;
|
48
|
+
}
|
49
|
+
|
50
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy91cGRhdGVHbG9iYWxWZXJzaW9uLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgVHlwZVdpdGhWZXJzaW9uIH0gZnJvbSAncGF5bG9hZC9kYXRhYmFzZSdcbmltcG9ydCB0eXBlIHsgVXBkYXRlR2xvYmFsVmVyc2lvbkFyZ3MgfSBmcm9tICdwYXlsb2FkL2RhdGFiYXNlJ1xuaW1wb3J0IHR5cGUgeyBQYXlsb2FkUmVxdWVzdCwgU2FuaXRpemVkR2xvYmFsQ29uZmlnLCBUeXBlV2l0aElEIH0gZnJvbSAncGF5bG9hZC90eXBlcydcblxuaW1wb3J0IHsgYnVpbGRWZXJzaW9uR2xvYmFsRmllbGRzIH0gZnJvbSAncGF5bG9hZC92ZXJzaW9ucydcbmltcG9ydCB0b1NuYWtlQ2FzZSBmcm9tICd0by1zbmFrZS1jYXNlJ1xuXG5pbXBvcnQgdHlwZSB7IFBvc3RncmVzQWRhcHRlciB9IGZyb20gJy4vdHlwZXMnXG5cbmltcG9ydCBidWlsZFF1ZXJ5IGZyb20gJy4vcXVlcmllcy9idWlsZFF1ZXJ5J1xuaW1wb3J0IHsgdXBzZXJ0Um93IH0gZnJvbSAnLi91cHNlcnRSb3cnXG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB1cGRhdGVHbG9iYWxWZXJzaW9uPFQgZXh0ZW5kcyBUeXBlV2l0aElEPihcbiAgdGhpczogUG9zdGdyZXNBZGFwdGVyLFxuICB7XG4gICAgaWQsXG4gICAgZ2xvYmFsLFxuICAgIGxvY2FsZSxcbiAgICByZXEgPSB7fSBhcyBQYXlsb2FkUmVxdWVzdCxcbiAgICB2ZXJzaW9uRGF0YSxcbiAgICB3aGVyZTogd2hlcmVBcmcsXG4gIH06IFVwZGF0ZUdsb2JhbFZlcnNpb25BcmdzPFQ+LFxuKSB7XG4gIGNvbnN0IGRiID0gdGhpcy5zZXNzaW9uc1tyZXEudHJhbnNhY3Rpb25JRF0/LmRiIHx8IHRoaXMuZGJcbiAgY29uc3QgZ2xvYmFsQ29uZmlnOiBTYW5pdGl6ZWRHbG9iYWxDb25maWcgPSB0aGlzLnBheWxvYWQuZ2xvYmFscy5jb25maWcuZmluZChcbiAgICAoeyBzbHVnIH0pID0+IHNsdWcgPT09IGdsb2JhbCxcbiAgKVxuICBjb25zdCB3aGVyZVRvVXNlID0gd2hlcmVBcmcgfHwgeyBpZDogeyBlcXVhbHM6IGlkIH0gfVxuICBjb25zdCB0YWJsZU5hbWUgPSBgXyR7dG9TbmFrZUNhc2UoZ2xvYmFsKX1fdmBcbiAgY29uc3QgZmllbGRzID0gYnVpbGRWZXJzaW9uR2xvYmFsRmllbGRzKGdsb2JhbENvbmZpZylcblxuICBjb25zdCB7IHdoZXJlIH0gPSBhd2FpdCBidWlsZFF1ZXJ5KHtcbiAgICBhZGFwdGVyOiB0aGlzLFxuICAgIGZpZWxkcyxcbiAgICBsb2NhbGUsXG4gICAgdGFibGVOYW1lLFxuICAgIHdoZXJlOiB3aGVyZVRvVXNlLFxuICB9KVxuXG4gIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHVwc2VydFJvdzxUeXBlV2l0aFZlcnNpb248VD4+KHtcbiAgICBpZCxcbiAgICBhZGFwdGVyOiB0aGlzLFxuICAgIGRhdGE6IHZlcnNpb25EYXRhLFxuICAgIGRiLFxuICAgIGZpZWxkcyxcbiAgICBvcGVyYXRpb246ICd1cGRhdGUnLFxuICAgIHRhYmxlTmFtZSxcbiAgICB3aGVyZSxcbiAgfSlcblxuICByZXR1cm4gcmVzdWx0XG59XG4iXSwibmFtZXMiOlsidXBkYXRlR2xvYmFsVmVyc2lvbiIsImlkIiwiZ2xvYmFsIiwibG9jYWxlIiwicmVxIiwidmVyc2lvbkRhdGEiLCJ3aGVyZSIsIndoZXJlQXJnIiwiZGIiLCJzZXNzaW9ucyIsInRyYW5zYWN0aW9uSUQiLCJnbG9iYWxDb25maWciLCJwYXlsb2FkIiwiZ2xvYmFscyIsImNvbmZpZyIsImZpbmQiLCJzbHVnIiwid2hlcmVUb1VzZSIsImVxdWFscyIsInRhYmxlTmFtZSIsInRvU25ha2VDYXNlIiwiZmllbGRzIiwiYnVpbGRWZXJzaW9uR2xvYmFsRmllbGRzIiwiYnVpbGRRdWVyeSIsImFkYXB0ZXIiLCJyZXN1bHQiLCJ1cHNlcnRSb3ciLCJkYXRhIiwib3BlcmF0aW9uIl0sIm1hcHBpbmdzIjoiOzs7OytCQVlzQkE7OztlQUFBQTs7OzBCQVJtQjtvRUFDakI7bUVBSUQ7MkJBQ0c7Ozs7OztBQUVuQixlQUFlQSxvQkFFcEIsRUFDRUMsRUFBRSxFQUNGQyxNQUFNLEVBQ05DLE1BQU0sRUFDTkMsTUFBTSxDQUFDLENBQW1CLEVBQzFCQyxXQUFXLEVBQ1hDLE9BQU9DLFFBQVEsRUFDWTtJQUU3QixNQUFNQyxLQUFLLElBQUksQ0FBQ0MsUUFBUSxDQUFDTCxJQUFJTSxhQUFhLENBQUMsRUFBRUYsTUFBTSxJQUFJLENBQUNBLEVBQUU7SUFDMUQsTUFBTUcsZUFBc0MsSUFBSSxDQUFDQyxPQUFPLENBQUNDLE9BQU8sQ0FBQ0MsTUFBTSxDQUFDQyxJQUFJLENBQzFFLENBQUMsRUFBRUMsSUFBSSxFQUFFLEdBQUtBLFNBQVNkO0lBRXpCLE1BQU1lLGFBQWFWLFlBQVk7UUFBRU4sSUFBSTtZQUFFaUIsUUFBUWpCO1FBQUc7SUFBRTtJQUNwRCxNQUFNa0IsWUFBWSxDQUFDLENBQUMsRUFBRUMsSUFBQUEsb0JBQVcsRUFBQ2xCLFFBQVEsRUFBRSxDQUFDO0lBQzdDLE1BQU1tQixTQUFTQyxJQUFBQSxrQ0FBd0IsRUFBQ1g7SUFFeEMsTUFBTSxFQUFFTCxLQUFLLEVBQUUsR0FBRyxNQUFNaUIsSUFBQUEsbUJBQVUsRUFBQztRQUNqQ0MsU0FBUyxJQUFJO1FBQ2JIO1FBQ0FsQjtRQUNBZ0I7UUFDQWIsT0FBT1c7SUFDVDtJQUVBLE1BQU1RLFNBQVMsTUFBTUMsSUFBQUEsb0JBQVMsRUFBcUI7UUFDakR6QjtRQUNBdUIsU0FBUyxJQUFJO1FBQ2JHLE1BQU10QjtRQUNORztRQUNBYTtRQUNBTyxXQUFXO1FBQ1hUO1FBQ0FiO0lBQ0Y7SUFFQSxPQUFPbUI7QUFDVCJ9
|
@@ -0,0 +1,50 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
3
|
+
value: true
|
4
|
+
});
|
5
|
+
Object.defineProperty(exports, "updateVersion", {
|
6
|
+
enumerable: true,
|
7
|
+
get: function() {
|
8
|
+
return updateVersion;
|
9
|
+
}
|
10
|
+
});
|
11
|
+
const _versions = require("payload/versions");
|
12
|
+
const _tosnakecase = /*#__PURE__*/ _interop_require_default(require("to-snake-case"));
|
13
|
+
const _buildQuery = /*#__PURE__*/ _interop_require_default(require("./queries/buildQuery"));
|
14
|
+
const _upsertRow = require("./upsertRow");
|
15
|
+
function _interop_require_default(obj) {
|
16
|
+
return obj && obj.__esModule ? obj : {
|
17
|
+
default: obj
|
18
|
+
};
|
19
|
+
}
|
20
|
+
async function updateVersion({ id, collection, locale, req = {}, versionData, where: whereArg }) {
|
21
|
+
const db = this.sessions[req.transactionID]?.db || this.db;
|
22
|
+
const collectionConfig = this.payload.collections[collection].config;
|
23
|
+
const whereToUse = whereArg || {
|
24
|
+
id: {
|
25
|
+
equals: id
|
26
|
+
}
|
27
|
+
};
|
28
|
+
const tableName = `_${(0, _tosnakecase.default)(collection)}_v`;
|
29
|
+
const fields = (0, _versions.buildVersionCollectionFields)(collectionConfig);
|
30
|
+
const { where } = await (0, _buildQuery.default)({
|
31
|
+
adapter: this,
|
32
|
+
fields,
|
33
|
+
locale,
|
34
|
+
tableName,
|
35
|
+
where: whereToUse
|
36
|
+
});
|
37
|
+
const result = await (0, _upsertRow.upsertRow)({
|
38
|
+
id,
|
39
|
+
adapter: this,
|
40
|
+
data: versionData,
|
41
|
+
db,
|
42
|
+
fields,
|
43
|
+
operation: 'update',
|
44
|
+
tableName,
|
45
|
+
where
|
46
|
+
});
|
47
|
+
return result;
|
48
|
+
}
|
49
|
+
|
50
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy91cGRhdGVWZXJzaW9uLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgVHlwZVdpdGhWZXJzaW9uLCBVcGRhdGVWZXJzaW9uQXJncyB9IGZyb20gJ3BheWxvYWQvZGF0YWJhc2UnXG5pbXBvcnQgdHlwZSB7IFBheWxvYWRSZXF1ZXN0LCBTYW5pdGl6ZWRDb2xsZWN0aW9uQ29uZmlnLCBUeXBlV2l0aElEIH0gZnJvbSAncGF5bG9hZC90eXBlcydcblxuaW1wb3J0IHsgYnVpbGRWZXJzaW9uQ29sbGVjdGlvbkZpZWxkcyB9IGZyb20gJ3BheWxvYWQvdmVyc2lvbnMnXG5pbXBvcnQgdG9TbmFrZUNhc2UgZnJvbSAndG8tc25ha2UtY2FzZSdcblxuaW1wb3J0IHR5cGUgeyBQb3N0Z3Jlc0FkYXB0ZXIgfSBmcm9tICcuL3R5cGVzJ1xuXG5pbXBvcnQgYnVpbGRRdWVyeSBmcm9tICcuL3F1ZXJpZXMvYnVpbGRRdWVyeSdcbmltcG9ydCB7IHVwc2VydFJvdyB9IGZyb20gJy4vdXBzZXJ0Um93J1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdXBkYXRlVmVyc2lvbjxUIGV4dGVuZHMgVHlwZVdpdGhJRD4oXG4gIHRoaXM6IFBvc3RncmVzQWRhcHRlcixcbiAge1xuICAgIGlkLFxuICAgIGNvbGxlY3Rpb24sXG4gICAgbG9jYWxlLFxuICAgIHJlcSA9IHt9IGFzIFBheWxvYWRSZXF1ZXN0LFxuICAgIHZlcnNpb25EYXRhLFxuICAgIHdoZXJlOiB3aGVyZUFyZyxcbiAgfTogVXBkYXRlVmVyc2lvbkFyZ3M8VD4sXG4pIHtcbiAgY29uc3QgZGIgPSB0aGlzLnNlc3Npb25zW3JlcS50cmFuc2FjdGlvbklEXT8uZGIgfHwgdGhpcy5kYlxuICBjb25zdCBjb2xsZWN0aW9uQ29uZmlnOiBTYW5pdGl6ZWRDb2xsZWN0aW9uQ29uZmlnID0gdGhpcy5wYXlsb2FkLmNvbGxlY3Rpb25zW2NvbGxlY3Rpb25dLmNvbmZpZ1xuICBjb25zdCB3aGVyZVRvVXNlID0gd2hlcmVBcmcgfHwgeyBpZDogeyBlcXVhbHM6IGlkIH0gfVxuICBjb25zdCB0YWJsZU5hbWUgPSBgXyR7dG9TbmFrZUNhc2UoY29sbGVjdGlvbil9X3ZgXG4gIGNvbnN0IGZpZWxkcyA9IGJ1aWxkVmVyc2lvbkNvbGxlY3Rpb25GaWVsZHMoY29sbGVjdGlvbkNvbmZpZylcblxuICBjb25zdCB7IHdoZXJlIH0gPSBhd2FpdCBidWlsZFF1ZXJ5KHtcbiAgICBhZGFwdGVyOiB0aGlzLFxuICAgIGZpZWxkcyxcbiAgICBsb2NhbGUsXG4gICAgdGFibGVOYW1lLFxuICAgIHdoZXJlOiB3aGVyZVRvVXNlLFxuICB9KVxuXG4gIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHVwc2VydFJvdzxUeXBlV2l0aFZlcnNpb248VD4+KHtcbiAgICBpZCxcbiAgICBhZGFwdGVyOiB0aGlzLFxuICAgIGRhdGE6IHZlcnNpb25EYXRhLFxuICAgIGRiLFxuICAgIGZpZWxkcyxcbiAgICBvcGVyYXRpb246ICd1cGRhdGUnLFxuICAgIHRhYmxlTmFtZSxcbiAgICB3aGVyZSxcbiAgfSlcblxuICByZXR1cm4gcmVzdWx0XG59XG4iXSwibmFtZXMiOlsidXBkYXRlVmVyc2lvbiIsImlkIiwiY29sbGVjdGlvbiIsImxvY2FsZSIsInJlcSIsInZlcnNpb25EYXRhIiwid2hlcmUiLCJ3aGVyZUFyZyIsImRiIiwic2Vzc2lvbnMiLCJ0cmFuc2FjdGlvbklEIiwiY29sbGVjdGlvbkNvbmZpZyIsInBheWxvYWQiLCJjb2xsZWN0aW9ucyIsImNvbmZpZyIsIndoZXJlVG9Vc2UiLCJlcXVhbHMiLCJ0YWJsZU5hbWUiLCJ0b1NuYWtlQ2FzZSIsImZpZWxkcyIsImJ1aWxkVmVyc2lvbkNvbGxlY3Rpb25GaWVsZHMiLCJidWlsZFF1ZXJ5IiwiYWRhcHRlciIsInJlc3VsdCIsInVwc2VydFJvdyIsImRhdGEiLCJvcGVyYXRpb24iXSwibWFwcGluZ3MiOiI7Ozs7K0JBV3NCQTs7O2VBQUFBOzs7MEJBUnVCO29FQUNyQjttRUFJRDsyQkFDRzs7Ozs7O0FBRW5CLGVBQWVBLGNBRXBCLEVBQ0VDLEVBQUUsRUFDRkMsVUFBVSxFQUNWQyxNQUFNLEVBQ05DLE1BQU0sQ0FBQyxDQUFtQixFQUMxQkMsV0FBVyxFQUNYQyxPQUFPQyxRQUFRLEVBQ007SUFFdkIsTUFBTUMsS0FBSyxJQUFJLENBQUNDLFFBQVEsQ0FBQ0wsSUFBSU0sYUFBYSxDQUFDLEVBQUVGLE1BQU0sSUFBSSxDQUFDQSxFQUFFO0lBQzFELE1BQU1HLG1CQUE4QyxJQUFJLENBQUNDLE9BQU8sQ0FBQ0MsV0FBVyxDQUFDWCxXQUFXLENBQUNZLE1BQU07SUFDL0YsTUFBTUMsYUFBYVIsWUFBWTtRQUFFTixJQUFJO1lBQUVlLFFBQVFmO1FBQUc7SUFBRTtJQUNwRCxNQUFNZ0IsWUFBWSxDQUFDLENBQUMsRUFBRUMsSUFBQUEsb0JBQVcsRUFBQ2hCLFlBQVksRUFBRSxDQUFDO0lBQ2pELE1BQU1pQixTQUFTQyxJQUFBQSxzQ0FBNEIsRUFBQ1Q7SUFFNUMsTUFBTSxFQUFFTCxLQUFLLEVBQUUsR0FBRyxNQUFNZSxJQUFBQSxtQkFBVSxFQUFDO1FBQ2pDQyxTQUFTLElBQUk7UUFDYkg7UUFDQWhCO1FBQ0FjO1FBQ0FYLE9BQU9TO0lBQ1Q7SUFFQSxNQUFNUSxTQUFTLE1BQU1DLElBQUFBLG9CQUFTLEVBQXFCO1FBQ2pEdkI7UUFDQXFCLFNBQVMsSUFBSTtRQUNiRyxNQUFNcEI7UUFDTkc7UUFDQVc7UUFDQU8sV0FBVztRQUNYVDtRQUNBWDtJQUNGO0lBRUEsT0FBT2lCO0FBQ1QifQ==
|
@@ -0,0 +1,20 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
3
|
+
value: true
|
4
|
+
});
|
5
|
+
Object.defineProperty(exports, "deleteExistingArrayRows", {
|
6
|
+
enumerable: true,
|
7
|
+
get: function() {
|
8
|
+
return deleteExistingArrayRows;
|
9
|
+
}
|
10
|
+
});
|
11
|
+
const _drizzleorm = require("drizzle-orm");
|
12
|
+
const deleteExistingArrayRows = async ({ adapter, db, parentID, tableName })=>{
|
13
|
+
const table = adapter.tables[tableName];
|
14
|
+
const whereConstraints = [
|
15
|
+
(0, _drizzleorm.eq)(table._parentID, parentID)
|
16
|
+
];
|
17
|
+
await db.delete(table).where((0, _drizzleorm.and)(...whereConstraints));
|
18
|
+
};
|
19
|
+
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91cHNlcnRSb3cvZGVsZXRlRXhpc3RpbmdBcnJheVJvd3MudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYW5kLCBlcSB9IGZyb20gJ2RyaXp6bGUtb3JtJ1xuXG5pbXBvcnQgdHlwZSB7IERyaXp6bGVEQiwgUG9zdGdyZXNBZGFwdGVyIH0gZnJvbSAnLi4vdHlwZXMnXG5cbnR5cGUgQXJncyA9IHtcbiAgYWRhcHRlcjogUG9zdGdyZXNBZGFwdGVyXG4gIGRiOiBEcml6emxlREJcbiAgcGFyZW50SUQ6IHVua25vd25cbiAgdGFibGVOYW1lOiBzdHJpbmdcbn1cblxuZXhwb3J0IGNvbnN0IGRlbGV0ZUV4aXN0aW5nQXJyYXlSb3dzID0gYXN5bmMgKHtcbiAgYWRhcHRlcixcbiAgZGIsXG4gIHBhcmVudElELFxuICB0YWJsZU5hbWUsXG59OiBBcmdzKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gIGNvbnN0IHRhYmxlID0gYWRhcHRlci50YWJsZXNbdGFibGVOYW1lXVxuXG4gIGNvbnN0IHdoZXJlQ29uc3RyYWludHMgPSBbZXEodGFibGUuX3BhcmVudElELCBwYXJlbnRJRCldXG5cbiAgYXdhaXQgZGIuZGVsZXRlKHRhYmxlKS53aGVyZShhbmQoLi4ud2hlcmVDb25zdHJhaW50cykpXG59XG4iXSwibmFtZXMiOlsiZGVsZXRlRXhpc3RpbmdBcnJheVJvd3MiLCJhZGFwdGVyIiwiZGIiLCJwYXJlbnRJRCIsInRhYmxlTmFtZSIsInRhYmxlIiwidGFibGVzIiwid2hlcmVDb25zdHJhaW50cyIsImVxIiwiX3BhcmVudElEIiwiZGVsZXRlIiwid2hlcmUiLCJhbmQiXSwibWFwcGluZ3MiOiI7Ozs7K0JBV2FBOzs7ZUFBQUE7Ozs0QkFYVztBQVdqQixNQUFNQSwwQkFBMEIsT0FBTyxFQUM1Q0MsT0FBTyxFQUNQQyxFQUFFLEVBQ0ZDLFFBQVEsRUFDUkMsU0FBUyxFQUNKO0lBQ0wsTUFBTUMsUUFBUUosUUFBUUssTUFBTSxDQUFDRixVQUFVO0lBRXZDLE1BQU1HLG1CQUFtQjtRQUFDQyxJQUFBQSxjQUFFLEVBQUNILE1BQU1JLFNBQVMsRUFBRU47S0FBVTtJQUV4RCxNQUFNRCxHQUFHUSxNQUFNLENBQUNMLE9BQU9NLEtBQUssQ0FBQ0MsSUFBQUEsZUFBRyxLQUFJTDtBQUN0QyJ9
|
@@ -0,0 +1,43 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
3
|
+
value: true
|
4
|
+
});
|
5
|
+
Object.defineProperty(exports, "deleteExistingRowsByPath", {
|
6
|
+
enumerable: true,
|
7
|
+
get: function() {
|
8
|
+
return deleteExistingRowsByPath;
|
9
|
+
}
|
10
|
+
});
|
11
|
+
const _drizzleorm = require("drizzle-orm");
|
12
|
+
const deleteExistingRowsByPath = async ({ adapter, db, localeColumnName = '_locale', parentColumnName = '_parentID', parentID, pathColumnName = '_path', rows, tableName })=>{
|
13
|
+
const localizedPathsToDelete = new Set();
|
14
|
+
const pathsToDelete = new Set();
|
15
|
+
const table = adapter.tables[tableName];
|
16
|
+
rows.forEach((row)=>{
|
17
|
+
const path = row[pathColumnName];
|
18
|
+
const localeData = row[localeColumnName];
|
19
|
+
if (typeof path === 'string') {
|
20
|
+
if (typeof localeData === 'string') {
|
21
|
+
localizedPathsToDelete.add(path);
|
22
|
+
} else {
|
23
|
+
pathsToDelete.add(path);
|
24
|
+
}
|
25
|
+
}
|
26
|
+
});
|
27
|
+
if (localizedPathsToDelete.size > 0) {
|
28
|
+
const whereConstraints = [
|
29
|
+
(0, _drizzleorm.eq)(table[parentColumnName], parentID)
|
30
|
+
];
|
31
|
+
if (pathColumnName) whereConstraints.push((0, _drizzleorm.inArray)(table[pathColumnName], Array.from(localizedPathsToDelete)));
|
32
|
+
await db.delete(table).where((0, _drizzleorm.and)(...whereConstraints));
|
33
|
+
}
|
34
|
+
if (pathsToDelete.size > 0) {
|
35
|
+
const whereConstraints = [
|
36
|
+
(0, _drizzleorm.eq)(table[parentColumnName], parentID)
|
37
|
+
];
|
38
|
+
if (pathColumnName) whereConstraints.push((0, _drizzleorm.inArray)(table[pathColumnName], Array.from(pathsToDelete)));
|
39
|
+
await db.delete(table).where((0, _drizzleorm.and)(...whereConstraints));
|
40
|
+
}
|
41
|
+
};
|
42
|
+
|
43
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91cHNlcnRSb3cvZGVsZXRlRXhpc3RpbmdSb3dzQnlQYXRoLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFuZCwgZXEsIGluQXJyYXkgfSBmcm9tICdkcml6emxlLW9ybSdcblxuaW1wb3J0IHR5cGUgeyBEcml6emxlREIsIFBvc3RncmVzQWRhcHRlciB9IGZyb20gJy4uL3R5cGVzJ1xuXG50eXBlIEFyZ3MgPSB7XG4gIGFkYXB0ZXI6IFBvc3RncmVzQWRhcHRlclxuICBkYjogRHJpenpsZURCXG4gIGxvY2FsZUNvbHVtbk5hbWU/OiBzdHJpbmdcbiAgcGFyZW50Q29sdW1uTmFtZT86IHN0cmluZ1xuICBwYXJlbnRJRDogdW5rbm93blxuICBwYXRoQ29sdW1uTmFtZT86IHN0cmluZ1xuICByb3dzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPltdXG4gIHRhYmxlTmFtZTogc3RyaW5nXG59XG5cbmV4cG9ydCBjb25zdCBkZWxldGVFeGlzdGluZ1Jvd3NCeVBhdGggPSBhc3luYyAoe1xuICBhZGFwdGVyLFxuICBkYixcbiAgbG9jYWxlQ29sdW1uTmFtZSA9ICdfbG9jYWxlJyxcbiAgcGFyZW50Q29sdW1uTmFtZSA9ICdfcGFyZW50SUQnLFxuICBwYXJlbnRJRCxcbiAgcGF0aENvbHVtbk5hbWUgPSAnX3BhdGgnLFxuICByb3dzLFxuICB0YWJsZU5hbWUsXG59OiBBcmdzKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gIGNvbnN0IGxvY2FsaXplZFBhdGhzVG9EZWxldGUgPSBuZXcgU2V0PHN0cmluZz4oKVxuICBjb25zdCBwYXRoc1RvRGVsZXRlID0gbmV3IFNldDxzdHJpbmc+KClcbiAgY29uc3QgdGFibGUgPSBhZGFwdGVyLnRhYmxlc1t0YWJsZU5hbWVdXG5cbiAgcm93cy5mb3JFYWNoKChyb3cpID0+IHtcbiAgICBjb25zdCBwYXRoID0gcm93W3BhdGhDb2x1bW5OYW1lXVxuICAgIGNvbnN0IGxvY2FsZURhdGEgPSByb3dbbG9jYWxlQ29sdW1uTmFtZV1cbiAgICBpZiAodHlwZW9mIHBhdGggPT09ICdzdHJpbmcnKSB7XG4gICAgICBpZiAodHlwZW9mIGxvY2FsZURhdGEgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGxvY2FsaXplZFBhdGhzVG9EZWxldGUuYWRkKHBhdGgpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwYXRoc1RvRGVsZXRlLmFkZChwYXRoKVxuICAgICAgfVxuICAgIH1cbiAgfSlcblxuICBpZiAobG9jYWxpemVkUGF0aHNUb0RlbGV0ZS5zaXplID4gMCkge1xuICAgIGNvbnN0IHdoZXJlQ29uc3RyYWludHMgPSBbZXEodGFibGVbcGFyZW50Q29sdW1uTmFtZV0sIHBhcmVudElEKV1cblxuICAgIGlmIChwYXRoQ29sdW1uTmFtZSlcbiAgICAgIHdoZXJlQ29uc3RyYWludHMucHVzaChpbkFycmF5KHRhYmxlW3BhdGhDb2x1bW5OYW1lXSwgQXJyYXkuZnJvbShsb2NhbGl6ZWRQYXRoc1RvRGVsZXRlKSkpXG5cbiAgICBhd2FpdCBkYi5kZWxldGUodGFibGUpLndoZXJlKGFuZCguLi53aGVyZUNvbnN0cmFpbnRzKSlcbiAgfVxuXG4gIGlmIChwYXRoc1RvRGVsZXRlLnNpemUgPiAwKSB7XG4gICAgY29uc3Qgd2hlcmVDb25zdHJhaW50cyA9IFtlcSh0YWJsZVtwYXJlbnRDb2x1bW5OYW1lXSwgcGFyZW50SUQpXVxuXG4gICAgaWYgKHBhdGhDb2x1bW5OYW1lKVxuICAgICAgd2hlcmVDb25zdHJhaW50cy5wdXNoKGluQXJyYXkodGFibGVbcGF0aENvbHVtbk5hbWVdLCBBcnJheS5mcm9tKHBhdGhzVG9EZWxldGUpKSlcblxuICAgIGF3YWl0IGRiLmRlbGV0ZSh0YWJsZSkud2hlcmUoYW5kKC4uLndoZXJlQ29uc3RyYWludHMpKVxuICB9XG59XG4iXSwibmFtZXMiOlsiZGVsZXRlRXhpc3RpbmdSb3dzQnlQYXRoIiwiYWRhcHRlciIsImRiIiwibG9jYWxlQ29sdW1uTmFtZSIsInBhcmVudENvbHVtbk5hbWUiLCJwYXJlbnRJRCIsInBhdGhDb2x1bW5OYW1lIiwicm93cyIsInRhYmxlTmFtZSIsImxvY2FsaXplZFBhdGhzVG9EZWxldGUiLCJTZXQiLCJwYXRoc1RvRGVsZXRlIiwidGFibGUiLCJ0YWJsZXMiLCJmb3JFYWNoIiwicm93IiwicGF0aCIsImxvY2FsZURhdGEiLCJhZGQiLCJzaXplIiwid2hlcmVDb25zdHJhaW50cyIsImVxIiwicHVzaCIsImluQXJyYXkiLCJBcnJheSIsImZyb20iLCJkZWxldGUiLCJ3aGVyZSIsImFuZCJdLCJtYXBwaW5ncyI6Ijs7OzsrQkFlYUE7OztlQUFBQTs7OzRCQWZvQjtBQWUxQixNQUFNQSwyQkFBMkIsT0FBTyxFQUM3Q0MsT0FBTyxFQUNQQyxFQUFFLEVBQ0ZDLG1CQUFtQixTQUFTLEVBQzVCQyxtQkFBbUIsV0FBVyxFQUM5QkMsUUFBUSxFQUNSQyxpQkFBaUIsT0FBTyxFQUN4QkMsSUFBSSxFQUNKQyxTQUFTLEVBQ0o7SUFDTCxNQUFNQyx5QkFBeUIsSUFBSUM7SUFDbkMsTUFBTUMsZ0JBQWdCLElBQUlEO0lBQzFCLE1BQU1FLFFBQVFYLFFBQVFZLE1BQU0sQ0FBQ0wsVUFBVTtJQUV2Q0QsS0FBS08sT0FBTyxDQUFDLENBQUNDO1FBQ1osTUFBTUMsT0FBT0QsR0FBRyxDQUFDVCxlQUFlO1FBQ2hDLE1BQU1XLGFBQWFGLEdBQUcsQ0FBQ1osaUJBQWlCO1FBQ3hDLElBQUksT0FBT2EsU0FBUyxVQUFVO1lBQzVCLElBQUksT0FBT0MsZUFBZSxVQUFVO2dCQUNsQ1IsdUJBQXVCUyxHQUFHLENBQUNGO1lBQzdCLE9BQU87Z0JBQ0xMLGNBQWNPLEdBQUcsQ0FBQ0Y7WUFDcEI7UUFDRjtJQUNGO0lBRUEsSUFBSVAsdUJBQXVCVSxJQUFJLEdBQUcsR0FBRztRQUNuQyxNQUFNQyxtQkFBbUI7WUFBQ0MsSUFBQUEsY0FBRSxFQUFDVCxLQUFLLENBQUNSLGlCQUFpQixFQUFFQztTQUFVO1FBRWhFLElBQUlDLGdCQUNGYyxpQkFBaUJFLElBQUksQ0FBQ0MsSUFBQUEsbUJBQU8sRUFBQ1gsS0FBSyxDQUFDTixlQUFlLEVBQUVrQixNQUFNQyxJQUFJLENBQUNoQjtRQUVsRSxNQUFNUCxHQUFHd0IsTUFBTSxDQUFDZCxPQUFPZSxLQUFLLENBQUNDLElBQUFBLGVBQUcsS0FBSVI7SUFDdEM7SUFFQSxJQUFJVCxjQUFjUSxJQUFJLEdBQUcsR0FBRztRQUMxQixNQUFNQyxtQkFBbUI7WUFBQ0MsSUFBQUEsY0FBRSxFQUFDVCxLQUFLLENBQUNSLGlCQUFpQixFQUFFQztTQUFVO1FBRWhFLElBQUlDLGdCQUNGYyxpQkFBaUJFLElBQUksQ0FBQ0MsSUFBQUEsbUJBQU8sRUFBQ1gsS0FBSyxDQUFDTixlQUFlLEVBQUVrQixNQUFNQyxJQUFJLENBQUNkO1FBRWxFLE1BQU1ULEdBQUd3QixNQUFNLENBQUNkLE9BQU9lLEtBQUssQ0FBQ0MsSUFBQUEsZUFBRyxLQUFJUjtJQUN0QztBQUNGIn0=
|
@@ -0,0 +1,243 @@
|
|
1
|
+
/* eslint-disable no-param-reassign */ "use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
3
|
+
value: true
|
4
|
+
});
|
5
|
+
Object.defineProperty(exports, "upsertRow", {
|
6
|
+
enumerable: true,
|
7
|
+
get: function() {
|
8
|
+
return upsertRow;
|
9
|
+
}
|
10
|
+
});
|
11
|
+
const _drizzleorm = require("drizzle-orm");
|
12
|
+
const _buildFindManyArgs = require("../find/buildFindManyArgs");
|
13
|
+
const _read = require("../transform/read");
|
14
|
+
const _write = require("../transform/write");
|
15
|
+
const _deleteExistingArrayRows = require("./deleteExistingArrayRows");
|
16
|
+
const _deleteExistingRowsByPath = require("./deleteExistingRowsByPath");
|
17
|
+
const _insertArrays = require("./insertArrays");
|
18
|
+
const upsertRow = async ({ id, adapter, data, db, fields, operation, path = '', tableName, upsertTarget, where })=>{
|
19
|
+
// Split out the incoming data into the corresponding:
|
20
|
+
// base row, locales, relationships, blocks, and arrays
|
21
|
+
const rowToInsert = (0, _write.transformForWrite)({
|
22
|
+
data,
|
23
|
+
fields,
|
24
|
+
path,
|
25
|
+
tableName
|
26
|
+
});
|
27
|
+
// First, we insert the main row
|
28
|
+
let insertedRow;
|
29
|
+
if (operation === 'update') {
|
30
|
+
const target = upsertTarget || adapter.tables[tableName].id;
|
31
|
+
if (id) {
|
32
|
+
rowToInsert.row.id = id;
|
33
|
+
[insertedRow] = await db.insert(adapter.tables[tableName]).values(rowToInsert.row).onConflictDoUpdate({
|
34
|
+
set: rowToInsert.row,
|
35
|
+
target
|
36
|
+
}).returning();
|
37
|
+
} else {
|
38
|
+
[insertedRow] = await db.insert(adapter.tables[tableName]).values(rowToInsert.row).onConflictDoUpdate({
|
39
|
+
set: rowToInsert.row,
|
40
|
+
target,
|
41
|
+
where
|
42
|
+
}).returning();
|
43
|
+
}
|
44
|
+
} else {
|
45
|
+
[insertedRow] = await db.insert(adapter.tables[tableName]).values(rowToInsert.row).returning();
|
46
|
+
}
|
47
|
+
const localesToInsert = [];
|
48
|
+
const relationsToInsert = [];
|
49
|
+
const numbersToInsert = [];
|
50
|
+
const blocksToInsert = {};
|
51
|
+
const selectsToInsert = {};
|
52
|
+
// If there are locale rows with data, add the parent and locale to each
|
53
|
+
if (Object.keys(rowToInsert.locales).length > 0) {
|
54
|
+
Object.entries(rowToInsert.locales).forEach(([locale, localeRow])=>{
|
55
|
+
localeRow._parentID = insertedRow.id;
|
56
|
+
localeRow._locale = locale;
|
57
|
+
localesToInsert.push(localeRow);
|
58
|
+
});
|
59
|
+
}
|
60
|
+
// If there are relationships, add parent to each
|
61
|
+
if (rowToInsert.relationships.length > 0) {
|
62
|
+
rowToInsert.relationships.forEach((relation)=>{
|
63
|
+
relation.parent = insertedRow.id;
|
64
|
+
relationsToInsert.push(relation);
|
65
|
+
});
|
66
|
+
}
|
67
|
+
// If there are numbers, add parent to each
|
68
|
+
if (rowToInsert.numbers.length > 0) {
|
69
|
+
rowToInsert.numbers.forEach((numberRow)=>{
|
70
|
+
numberRow.parent = insertedRow.id;
|
71
|
+
numbersToInsert.push(numberRow);
|
72
|
+
});
|
73
|
+
}
|
74
|
+
// If there are selects, add parent to each, and then
|
75
|
+
// store by table name and rows
|
76
|
+
if (Object.keys(rowToInsert.selects).length > 0) {
|
77
|
+
Object.entries(rowToInsert.selects).forEach(([selectTableName, selectRows])=>{
|
78
|
+
selectRows.forEach((row)=>{
|
79
|
+
row.parent = insertedRow.id;
|
80
|
+
if (!selectsToInsert[selectTableName]) selectsToInsert[selectTableName] = [];
|
81
|
+
selectsToInsert[selectTableName].push(row);
|
82
|
+
});
|
83
|
+
});
|
84
|
+
}
|
85
|
+
// If there are blocks, add parent to each, and then
|
86
|
+
// store by table name and rows
|
87
|
+
Object.keys(rowToInsert.blocks).forEach((blockName)=>{
|
88
|
+
rowToInsert.blocks[blockName].forEach((blockRow)=>{
|
89
|
+
blockRow.row._parentID = insertedRow.id;
|
90
|
+
if (!blocksToInsert[blockName]) blocksToInsert[blockName] = [];
|
91
|
+
blocksToInsert[blockName].push(blockRow);
|
92
|
+
});
|
93
|
+
});
|
94
|
+
// //////////////////////////////////
|
95
|
+
// INSERT LOCALES
|
96
|
+
// //////////////////////////////////
|
97
|
+
if (localesToInsert.length > 0) {
|
98
|
+
const localeTable = adapter.tables[`${tableName}_locales`];
|
99
|
+
if (operation === 'update') {
|
100
|
+
await db.delete(localeTable).where((0, _drizzleorm.eq)(localeTable._parentID, insertedRow.id));
|
101
|
+
}
|
102
|
+
await db.insert(localeTable).values(localesToInsert);
|
103
|
+
}
|
104
|
+
// //////////////////////////////////
|
105
|
+
// INSERT RELATIONSHIPS
|
106
|
+
// //////////////////////////////////
|
107
|
+
const relationshipsTableName = `${tableName}_relationships`;
|
108
|
+
if (operation === 'update') {
|
109
|
+
await (0, _deleteExistingRowsByPath.deleteExistingRowsByPath)({
|
110
|
+
adapter,
|
111
|
+
db,
|
112
|
+
localeColumnName: 'locale',
|
113
|
+
parentColumnName: 'parent',
|
114
|
+
parentID: insertedRow.id,
|
115
|
+
pathColumnName: 'path',
|
116
|
+
rows: [
|
117
|
+
...relationsToInsert,
|
118
|
+
...rowToInsert.relationshipsToDelete
|
119
|
+
],
|
120
|
+
tableName: relationshipsTableName
|
121
|
+
});
|
122
|
+
}
|
123
|
+
if (relationsToInsert.length > 0) {
|
124
|
+
await db.insert(adapter.tables[relationshipsTableName]).values(relationsToInsert);
|
125
|
+
}
|
126
|
+
// //////////////////////////////////
|
127
|
+
// INSERT hasMany NUMBERS
|
128
|
+
// //////////////////////////////////
|
129
|
+
const numbersTableName = `${tableName}_numbers`;
|
130
|
+
if (operation === 'update') {
|
131
|
+
await (0, _deleteExistingRowsByPath.deleteExistingRowsByPath)({
|
132
|
+
adapter,
|
133
|
+
db,
|
134
|
+
localeColumnName: 'locale',
|
135
|
+
parentColumnName: 'parent',
|
136
|
+
parentID: insertedRow.id,
|
137
|
+
pathColumnName: 'path',
|
138
|
+
rows: numbersToInsert,
|
139
|
+
tableName: numbersTableName
|
140
|
+
});
|
141
|
+
}
|
142
|
+
if (numbersToInsert.length > 0) {
|
143
|
+
await db.insert(adapter.tables[numbersTableName]).values(numbersToInsert).returning();
|
144
|
+
}
|
145
|
+
// //////////////////////////////////
|
146
|
+
// INSERT BLOCKS
|
147
|
+
// //////////////////////////////////
|
148
|
+
const insertedBlockRows = {};
|
149
|
+
for (const [blockName, blockRows] of Object.entries(blocksToInsert)){
|
150
|
+
if (operation === 'update') {
|
151
|
+
await (0, _deleteExistingRowsByPath.deleteExistingRowsByPath)({
|
152
|
+
adapter,
|
153
|
+
db,
|
154
|
+
parentID: insertedRow.id,
|
155
|
+
pathColumnName: '_path',
|
156
|
+
rows: blockRows.map(({ row })=>row),
|
157
|
+
tableName: `${tableName}_blocks_${blockName}`
|
158
|
+
});
|
159
|
+
}
|
160
|
+
insertedBlockRows[blockName] = await db.insert(adapter.tables[`${tableName}_blocks_${blockName}`]).values(blockRows.map(({ row })=>row)).returning();
|
161
|
+
insertedBlockRows[blockName].forEach((row, i)=>{
|
162
|
+
blockRows[i].row = row;
|
163
|
+
});
|
164
|
+
const blockLocaleIndexMap = [];
|
165
|
+
const blockLocaleRowsToInsert = blockRows.reduce((acc, blockRow, i)=>{
|
166
|
+
if (Object.entries(blockRow.locales).length > 0) {
|
167
|
+
Object.entries(blockRow.locales).forEach(([blockLocale, blockLocaleData])=>{
|
168
|
+
if (Object.keys(blockLocaleData).length > 0) {
|
169
|
+
blockLocaleData._parentID = blockRow.row.id;
|
170
|
+
blockLocaleData._locale = blockLocale;
|
171
|
+
acc.push(blockLocaleData);
|
172
|
+
blockLocaleIndexMap.push(i);
|
173
|
+
}
|
174
|
+
});
|
175
|
+
}
|
176
|
+
return acc;
|
177
|
+
}, []);
|
178
|
+
if (blockLocaleRowsToInsert.length > 0) {
|
179
|
+
await db.insert(adapter.tables[`${tableName}_blocks_${blockName}_locales`]).values(blockLocaleRowsToInsert).returning();
|
180
|
+
}
|
181
|
+
await (0, _insertArrays.insertArrays)({
|
182
|
+
adapter,
|
183
|
+
arrays: blockRows.map(({ arrays })=>arrays),
|
184
|
+
db,
|
185
|
+
parentRows: insertedBlockRows[blockName]
|
186
|
+
});
|
187
|
+
}
|
188
|
+
// //////////////////////////////////
|
189
|
+
// INSERT ARRAYS RECURSIVELY
|
190
|
+
// //////////////////////////////////
|
191
|
+
if (operation === 'update') {
|
192
|
+
for (const arrayTableName of Object.keys(rowToInsert.arrays)){
|
193
|
+
await (0, _deleteExistingArrayRows.deleteExistingArrayRows)({
|
194
|
+
adapter,
|
195
|
+
db,
|
196
|
+
parentID: insertedRow.id,
|
197
|
+
tableName: arrayTableName
|
198
|
+
});
|
199
|
+
}
|
200
|
+
}
|
201
|
+
await (0, _insertArrays.insertArrays)({
|
202
|
+
adapter,
|
203
|
+
arrays: [
|
204
|
+
rowToInsert.arrays
|
205
|
+
],
|
206
|
+
db,
|
207
|
+
parentRows: [
|
208
|
+
insertedRow
|
209
|
+
]
|
210
|
+
});
|
211
|
+
// //////////////////////////////////
|
212
|
+
// INSERT hasMany SELECTS
|
213
|
+
// //////////////////////////////////
|
214
|
+
for (const [selectTableName, tableRows] of Object.entries(selectsToInsert)){
|
215
|
+
const selectTable = adapter.tables[selectTableName];
|
216
|
+
if (operation === 'update') {
|
217
|
+
await db.delete(selectTable).where((0, _drizzleorm.eq)(selectTable.parent, insertedRow.id));
|
218
|
+
}
|
219
|
+
await db.insert(selectTable).values(tableRows).returning();
|
220
|
+
}
|
221
|
+
// //////////////////////////////////
|
222
|
+
// RETRIEVE NEWLY UPDATED ROW
|
223
|
+
// //////////////////////////////////
|
224
|
+
const findManyArgs = (0, _buildFindManyArgs.buildFindManyArgs)({
|
225
|
+
adapter,
|
226
|
+
depth: 0,
|
227
|
+
fields,
|
228
|
+
tableName
|
229
|
+
});
|
230
|
+
findManyArgs.where = (0, _drizzleorm.eq)(adapter.tables[tableName].id, insertedRow.id);
|
231
|
+
const doc = await db.query[tableName].findFirst(findManyArgs);
|
232
|
+
// //////////////////////////////////
|
233
|
+
// TRANSFORM DATA
|
234
|
+
// //////////////////////////////////
|
235
|
+
const result = (0, _read.transform)({
|
236
|
+
config: adapter.payload.config,
|
237
|
+
data: doc,
|
238
|
+
fields
|
239
|
+
});
|
240
|
+
return result;
|
241
|
+
};
|
242
|
+
|
243
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91cHNlcnRSb3cvaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tcGFyYW0tcmVhc3NpZ24gKi9cbmltcG9ydCB0eXBlIHsgVHlwZVdpdGhJRCB9IGZyb20gJ3BheWxvYWQvdHlwZXMnXG5cbmltcG9ydCB7IGVxIH0gZnJvbSAnZHJpenpsZS1vcm0nXG5cbmltcG9ydCB0eXBlIHsgQmxvY2tSb3dUb0luc2VydCB9IGZyb20gJy4uL3RyYW5zZm9ybS93cml0ZS90eXBlcydcbmltcG9ydCB0eXBlIHsgQXJncyB9IGZyb20gJy4vdHlwZXMnXG5cbmltcG9ydCB7IGJ1aWxkRmluZE1hbnlBcmdzIH0gZnJvbSAnLi4vZmluZC9idWlsZEZpbmRNYW55QXJncydcbmltcG9ydCB7IHRyYW5zZm9ybSB9IGZyb20gJy4uL3RyYW5zZm9ybS9yZWFkJ1xuaW1wb3J0IHsgdHJhbnNmb3JtRm9yV3JpdGUgfSBmcm9tICcuLi90cmFuc2Zvcm0vd3JpdGUnXG5pbXBvcnQgeyBkZWxldGVFeGlzdGluZ0FycmF5Um93cyB9IGZyb20gJy4vZGVsZXRlRXhpc3RpbmdBcnJheVJvd3MnXG5pbXBvcnQgeyBkZWxldGVFeGlzdGluZ1Jvd3NCeVBhdGggfSBmcm9tICcuL2RlbGV0ZUV4aXN0aW5nUm93c0J5UGF0aCdcbmltcG9ydCB7IGluc2VydEFycmF5cyB9IGZyb20gJy4vaW5zZXJ0QXJyYXlzJ1xuXG5leHBvcnQgY29uc3QgdXBzZXJ0Um93ID0gYXN5bmMgPFQgZXh0ZW5kcyBUeXBlV2l0aElEPih7XG4gIGlkLFxuICBhZGFwdGVyLFxuICBkYXRhLFxuICBkYixcbiAgZmllbGRzLFxuICBvcGVyYXRpb24sXG4gIHBhdGggPSAnJyxcbiAgdGFibGVOYW1lLFxuICB1cHNlcnRUYXJnZXQsXG4gIHdoZXJlLFxufTogQXJncyk6IFByb21pc2U8VD4gPT4ge1xuICAvLyBTcGxpdCBvdXQgdGhlIGluY29taW5nIGRhdGEgaW50byB0aGUgY29ycmVzcG9uZGluZzpcbiAgLy8gYmFzZSByb3csIGxvY2FsZXMsIHJlbGF0aW9uc2hpcHMsIGJsb2NrcywgYW5kIGFycmF5c1xuICBjb25zdCByb3dUb0luc2VydCA9IHRyYW5zZm9ybUZvcldyaXRlKHtcbiAgICBkYXRhLFxuICAgIGZpZWxkcyxcbiAgICBwYXRoLFxuICAgIHRhYmxlTmFtZSxcbiAgfSlcblxuICAvLyBGaXJzdCwgd2UgaW5zZXJ0IHRoZSBtYWluIHJvd1xuICBsZXQgaW5zZXJ0ZWRSb3c6IFJlY29yZDxzdHJpbmcsIHVua25vd24+XG5cbiAgaWYgKG9wZXJhdGlvbiA9PT0gJ3VwZGF0ZScpIHtcbiAgICBjb25zdCB0YXJnZXQgPSB1cHNlcnRUYXJnZXQgfHwgYWRhcHRlci50YWJsZXNbdGFibGVOYW1lXS5pZFxuXG4gICAgaWYgKGlkKSB7XG4gICAgICByb3dUb0luc2VydC5yb3cuaWQgPSBpZFxuICAgICAgO1tpbnNlcnRlZFJvd10gPSBhd2FpdCBkYlxuICAgICAgICAuaW5zZXJ0KGFkYXB0ZXIudGFibGVzW3RhYmxlTmFtZV0pXG4gICAgICAgIC52YWx1ZXMocm93VG9JbnNlcnQucm93KVxuICAgICAgICAub25Db25mbGljdERvVXBkYXRlKHsgc2V0OiByb3dUb0luc2VydC5yb3csIHRhcmdldCB9KVxuICAgICAgICAucmV0dXJuaW5nKClcbiAgICB9IGVsc2Uge1xuICAgICAgO1tpbnNlcnRlZFJvd10gPSBhd2FpdCBkYlxuICAgICAgICAuaW5zZXJ0KGFkYXB0ZXIudGFibGVzW3RhYmxlTmFtZV0pXG4gICAgICAgIC52YWx1ZXMocm93VG9JbnNlcnQucm93KVxuICAgICAgICAub25Db25mbGljdERvVXBkYXRlKHsgc2V0OiByb3dUb0luc2VydC5yb3csIHRhcmdldCwgd2hlcmUgfSlcbiAgICAgICAgLnJldHVybmluZygpXG4gICAgfVxuICB9IGVsc2Uge1xuICAgIDtbaW5zZXJ0ZWRSb3ddID0gYXdhaXQgZGIuaW5zZXJ0KGFkYXB0ZXIudGFibGVzW3RhYmxlTmFtZV0pLnZhbHVlcyhyb3dUb0luc2VydC5yb3cpLnJldHVybmluZygpXG4gIH1cblxuICBjb25zdCBsb2NhbGVzVG9JbnNlcnQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+W10gPSBbXVxuICBjb25zdCByZWxhdGlvbnNUb0luc2VydDogUmVjb3JkPHN0cmluZywgdW5rbm93bj5bXSA9IFtdXG4gIGNvbnN0IG51bWJlcnNUb0luc2VydDogUmVjb3JkPHN0cmluZywgdW5rbm93bj5bXSA9IFtdXG4gIGNvbnN0IGJsb2Nrc1RvSW5zZXJ0OiB7IFtibG9ja1R5cGU6IHN0cmluZ106IEJsb2NrUm93VG9JbnNlcnRbXSB9ID0ge31cbiAgY29uc3Qgc2VsZWN0c1RvSW5zZXJ0OiB7IFtzZWxlY3RUYWJsZU5hbWU6IHN0cmluZ106IFJlY29yZDxzdHJpbmcsIHVua25vd24+W10gfSA9IHt9XG5cbiAgLy8gSWYgdGhlcmUgYXJlIGxvY2FsZSByb3dzIHdpdGggZGF0YSwgYWRkIHRoZSBwYXJlbnQgYW5kIGxvY2FsZSB0byBlYWNoXG4gIGlmIChPYmplY3Qua2V5cyhyb3dUb0luc2VydC5sb2NhbGVzKS5sZW5ndGggPiAwKSB7XG4gICAgT2JqZWN0LmVudHJpZXMocm93VG9JbnNlcnQubG9jYWxlcykuZm9yRWFjaCgoW2xvY2FsZSwgbG9jYWxlUm93XSkgPT4ge1xuICAgICAgbG9jYWxlUm93Ll9wYXJlbnRJRCA9IGluc2VydGVkUm93LmlkXG4gICAgICBsb2NhbGVSb3cuX2xvY2FsZSA9IGxvY2FsZVxuICAgICAgbG9jYWxlc1RvSW5zZXJ0LnB1c2gobG9jYWxlUm93KVxuICAgIH0pXG4gIH1cblxuICAvLyBJZiB0aGVyZSBhcmUgcmVsYXRpb25zaGlwcywgYWRkIHBhcmVudCB0byBlYWNoXG4gIGlmIChyb3dUb0luc2VydC5yZWxhdGlvbnNoaXBzLmxlbmd0aCA+IDApIHtcbiAgICByb3dUb0luc2VydC5yZWxhdGlvbnNoaXBzLmZvckVhY2goKHJlbGF0aW9uKSA9PiB7XG4gICAgICByZWxhdGlvbi5wYXJlbnQgPSBpbnNlcnRlZFJvdy5pZFxuICAgICAgcmVsYXRpb25zVG9JbnNlcnQucHVzaChyZWxhdGlvbilcbiAgICB9KVxuICB9XG5cbiAgLy8gSWYgdGhlcmUgYXJlIG51bWJlcnMsIGFkZCBwYXJlbnQgdG8gZWFjaFxuICBpZiAocm93VG9JbnNlcnQubnVtYmVycy5sZW5ndGggPiAwKSB7XG4gICAgcm93VG9JbnNlcnQubnVtYmVycy5mb3JFYWNoKChudW1iZXJSb3cpID0+IHtcbiAgICAgIG51bWJlclJvdy5wYXJlbnQgPSBpbnNlcnRlZFJvdy5pZFxuICAgICAgbnVtYmVyc1RvSW5zZXJ0LnB1c2gobnVtYmVyUm93KVxuICAgIH0pXG4gIH1cblxuICAvLyBJZiB0aGVyZSBhcmUgc2VsZWN0cywgYWRkIHBhcmVudCB0byBlYWNoLCBhbmQgdGhlblxuICAvLyBzdG9yZSBieSB0YWJsZSBuYW1lIGFuZCByb3dzXG4gIGlmIChPYmplY3Qua2V5cyhyb3dUb0luc2VydC5zZWxlY3RzKS5sZW5ndGggPiAwKSB7XG4gICAgT2JqZWN0LmVudHJpZXMocm93VG9JbnNlcnQuc2VsZWN0cykuZm9yRWFjaCgoW3NlbGVjdFRhYmxlTmFtZSwgc2VsZWN0Um93c10pID0+IHtcbiAgICAgIHNlbGVjdFJvd3MuZm9yRWFjaCgocm93KSA9PiB7XG4gICAgICAgIHJvdy5wYXJlbnQgPSBpbnNlcnRlZFJvdy5pZFxuICAgICAgICBpZiAoIXNlbGVjdHNUb0luc2VydFtzZWxlY3RUYWJsZU5hbWVdKSBzZWxlY3RzVG9JbnNlcnRbc2VsZWN0VGFibGVOYW1lXSA9IFtdXG4gICAgICAgIHNlbGVjdHNUb0luc2VydFtzZWxlY3RUYWJsZU5hbWVdLnB1c2gocm93KVxuICAgICAgfSlcbiAgICB9KVxuICB9XG5cbiAgLy8gSWYgdGhlcmUgYXJlIGJsb2NrcywgYWRkIHBhcmVudCB0byBlYWNoLCBhbmQgdGhlblxuICAvLyBzdG9yZSBieSB0YWJsZSBuYW1lIGFuZCByb3dzXG4gIE9iamVjdC5rZXlzKHJvd1RvSW5zZXJ0LmJsb2NrcykuZm9yRWFjaCgoYmxvY2tOYW1lKSA9PiB7XG4gICAgcm93VG9JbnNlcnQuYmxvY2tzW2Jsb2NrTmFtZV0uZm9yRWFjaCgoYmxvY2tSb3cpID0+IHtcbiAgICAgIGJsb2NrUm93LnJvdy5fcGFyZW50SUQgPSBpbnNlcnRlZFJvdy5pZFxuICAgICAgaWYgKCFibG9ja3NUb0luc2VydFtibG9ja05hbWVdKSBibG9ja3NUb0luc2VydFtibG9ja05hbWVdID0gW11cbiAgICAgIGJsb2Nrc1RvSW5zZXJ0W2Jsb2NrTmFtZV0ucHVzaChibG9ja1JvdylcbiAgICB9KVxuICB9KVxuXG4gIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgLy8gSU5TRVJUIExPQ0FMRVNcbiAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG4gIGlmIChsb2NhbGVzVG9JbnNlcnQubGVuZ3RoID4gMCkge1xuICAgIGNvbnN0IGxvY2FsZVRhYmxlID0gYWRhcHRlci50YWJsZXNbYCR7dGFibGVOYW1lfV9sb2NhbGVzYF1cblxuICAgIGlmIChvcGVyYXRpb24gPT09ICd1cGRhdGUnKSB7XG4gICAgICBhd2FpdCBkYi5kZWxldGUobG9jYWxlVGFibGUpLndoZXJlKGVxKGxvY2FsZVRhYmxlLl9wYXJlbnRJRCwgaW5zZXJ0ZWRSb3cuaWQpKVxuICAgIH1cblxuICAgIGF3YWl0IGRiLmluc2VydChsb2NhbGVUYWJsZSkudmFsdWVzKGxvY2FsZXNUb0luc2VydClcbiAgfVxuXG4gIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgLy8gSU5TRVJUIFJFTEFUSU9OU0hJUFNcbiAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG4gIGNvbnN0IHJlbGF0aW9uc2hpcHNUYWJsZU5hbWUgPSBgJHt0YWJsZU5hbWV9X3JlbGF0aW9uc2hpcHNgXG5cbiAgaWYgKG9wZXJhdGlvbiA9PT0gJ3VwZGF0ZScpIHtcbiAgICBhd2FpdCBkZWxldGVFeGlzdGluZ1Jvd3NCeVBhdGgoe1xuICAgICAgYWRhcHRlcixcbiAgICAgIGRiLFxuICAgICAgbG9jYWxlQ29sdW1uTmFtZTogJ2xvY2FsZScsXG4gICAgICBwYXJlbnRDb2x1bW5OYW1lOiAncGFyZW50JyxcbiAgICAgIHBhcmVudElEOiBpbnNlcnRlZFJvdy5pZCxcbiAgICAgIHBhdGhDb2x1bW5OYW1lOiAncGF0aCcsXG4gICAgICByb3dzOiBbLi4ucmVsYXRpb25zVG9JbnNlcnQsIC4uLnJvd1RvSW5zZXJ0LnJlbGF0aW9uc2hpcHNUb0RlbGV0ZV0sXG4gICAgICB0YWJsZU5hbWU6IHJlbGF0aW9uc2hpcHNUYWJsZU5hbWUsXG4gICAgfSlcbiAgfVxuXG4gIGlmIChyZWxhdGlvbnNUb0luc2VydC5sZW5ndGggPiAwKSB7XG4gICAgYXdhaXQgZGIuaW5zZXJ0KGFkYXB0ZXIudGFibGVzW3JlbGF0aW9uc2hpcHNUYWJsZU5hbWVdKS52YWx1ZXMocmVsYXRpb25zVG9JbnNlcnQpXG4gIH1cblxuICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gIC8vIElOU0VSVCBoYXNNYW55IE5VTUJFUlNcbiAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG4gIGNvbnN0IG51bWJlcnNUYWJsZU5hbWUgPSBgJHt0YWJsZU5hbWV9X251bWJlcnNgXG5cbiAgaWYgKG9wZXJhdGlvbiA9PT0gJ3VwZGF0ZScpIHtcbiAgICBhd2FpdCBkZWxldGVFeGlzdGluZ1Jvd3NCeVBhdGgoe1xuICAgICAgYWRhcHRlcixcbiAgICAgIGRiLFxuICAgICAgbG9jYWxlQ29sdW1uTmFtZTogJ2xvY2FsZScsXG4gICAgICBwYXJlbnRDb2x1bW5OYW1lOiAncGFyZW50JyxcbiAgICAgIHBhcmVudElEOiBpbnNlcnRlZFJvdy5pZCxcbiAgICAgIHBhdGhDb2x1bW5OYW1lOiAncGF0aCcsXG4gICAgICByb3dzOiBudW1iZXJzVG9JbnNlcnQsXG4gICAgICB0YWJsZU5hbWU6IG51bWJlcnNUYWJsZU5hbWUsXG4gICAgfSlcbiAgfVxuXG4gIGlmIChudW1iZXJzVG9JbnNlcnQubGVuZ3RoID4gMCkge1xuICAgIGF3YWl0IGRiLmluc2VydChhZGFwdGVyLnRhYmxlc1tudW1iZXJzVGFibGVOYW1lXSkudmFsdWVzKG51bWJlcnNUb0luc2VydCkucmV0dXJuaW5nKClcbiAgfVxuXG4gIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgLy8gSU5TRVJUIEJMT0NLU1xuICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbiAgY29uc3QgaW5zZXJ0ZWRCbG9ja1Jvd3M6IFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIHVua25vd24+W10+ID0ge31cblxuICBmb3IgKGNvbnN0IFtibG9ja05hbWUsIGJsb2NrUm93c10gb2YgT2JqZWN0LmVudHJpZXMoYmxvY2tzVG9JbnNlcnQpKSB7XG4gICAgaWYgKG9wZXJhdGlvbiA9PT0gJ3VwZGF0ZScpIHtcbiAgICAgIGF3YWl0IGRlbGV0ZUV4aXN0aW5nUm93c0J5UGF0aCh7XG4gICAgICAgIGFkYXB0ZXIsXG4gICAgICAgIGRiLFxuICAgICAgICBwYXJlbnRJRDogaW5zZXJ0ZWRSb3cuaWQsXG4gICAgICAgIHBhdGhDb2x1bW5OYW1lOiAnX3BhdGgnLFxuICAgICAgICByb3dzOiBibG9ja1Jvd3MubWFwKCh7IHJvdyB9KSA9PiByb3cpLFxuICAgICAgICB0YWJsZU5hbWU6IGAke3RhYmxlTmFtZX1fYmxvY2tzXyR7YmxvY2tOYW1lfWAsXG4gICAgICB9KVxuICAgIH1cblxuICAgIGluc2VydGVkQmxvY2tSb3dzW2Jsb2NrTmFtZV0gPSBhd2FpdCBkYlxuICAgICAgLmluc2VydChhZGFwdGVyLnRhYmxlc1tgJHt0YWJsZU5hbWV9X2Jsb2Nrc18ke2Jsb2NrTmFtZX1gXSlcbiAgICAgIC52YWx1ZXMoYmxvY2tSb3dzLm1hcCgoeyByb3cgfSkgPT4gcm93KSlcbiAgICAgIC5yZXR1cm5pbmcoKVxuXG4gICAgaW5zZXJ0ZWRCbG9ja1Jvd3NbYmxvY2tOYW1lXS5mb3JFYWNoKChyb3csIGkpID0+IHtcbiAgICAgIGJsb2NrUm93c1tpXS5yb3cgPSByb3dcbiAgICB9KVxuXG4gICAgY29uc3QgYmxvY2tMb2NhbGVJbmRleE1hcDogbnVtYmVyW10gPSBbXVxuXG4gICAgY29uc3QgYmxvY2tMb2NhbGVSb3dzVG9JbnNlcnQgPSBibG9ja1Jvd3MucmVkdWNlKChhY2MsIGJsb2NrUm93LCBpKSA9PiB7XG4gICAgICBpZiAoT2JqZWN0LmVudHJpZXMoYmxvY2tSb3cubG9jYWxlcykubGVuZ3RoID4gMCkge1xuICAgICAgICBPYmplY3QuZW50cmllcyhibG9ja1Jvdy5sb2NhbGVzKS5mb3JFYWNoKChbYmxvY2tMb2NhbGUsIGJsb2NrTG9jYWxlRGF0YV0pID0+IHtcbiAgICAgICAgICBpZiAoT2JqZWN0LmtleXMoYmxvY2tMb2NhbGVEYXRhKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBibG9ja0xvY2FsZURhdGEuX3BhcmVudElEID0gYmxvY2tSb3cucm93LmlkXG4gICAgICAgICAgICBibG9ja0xvY2FsZURhdGEuX2xvY2FsZSA9IGJsb2NrTG9jYWxlXG4gICAgICAgICAgICBhY2MucHVzaChibG9ja0xvY2FsZURhdGEpXG4gICAgICAgICAgICBibG9ja0xvY2FsZUluZGV4TWFwLnB1c2goaSlcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIHJldHVybiBhY2NcbiAgICB9LCBbXSlcblxuICAgIGlmIChibG9ja0xvY2FsZVJvd3NUb0luc2VydC5sZW5ndGggPiAwKSB7XG4gICAgICBhd2FpdCBkYlxuICAgICAgICAuaW5zZXJ0KGFkYXB0ZXIudGFibGVzW2Ake3RhYmxlTmFtZX1fYmxvY2tzXyR7YmxvY2tOYW1lfV9sb2NhbGVzYF0pXG4gICAgICAgIC52YWx1ZXMoYmxvY2tMb2NhbGVSb3dzVG9JbnNlcnQpXG4gICAgICAgIC5yZXR1cm5pbmcoKVxuICAgIH1cblxuICAgIGF3YWl0IGluc2VydEFycmF5cyh7XG4gICAgICBhZGFwdGVyLFxuICAgICAgYXJyYXlzOiBibG9ja1Jvd3MubWFwKCh7IGFycmF5cyB9KSA9PiBhcnJheXMpLFxuICAgICAgZGIsXG4gICAgICBwYXJlbnRSb3dzOiBpbnNlcnRlZEJsb2NrUm93c1tibG9ja05hbWVdLFxuICAgIH0pXG4gIH1cblxuICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gIC8vIElOU0VSVCBBUlJBWVMgUkVDVVJTSVZFTFlcbiAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG4gIGlmIChvcGVyYXRpb24gPT09ICd1cGRhdGUnKSB7XG4gICAgZm9yIChjb25zdCBhcnJheVRhYmxlTmFtZSBvZiBPYmplY3Qua2V5cyhyb3dUb0luc2VydC5hcnJheXMpKSB7XG4gICAgICBhd2FpdCBkZWxldGVFeGlzdGluZ0FycmF5Um93cyh7XG4gICAgICAgIGFkYXB0ZXIsXG4gICAgICAgIGRiLFxuICAgICAgICBwYXJlbnRJRDogaW5zZXJ0ZWRSb3cuaWQsXG4gICAgICAgIHRhYmxlTmFtZTogYXJyYXlUYWJsZU5hbWUsXG4gICAgICB9KVxuICAgIH1cbiAgfVxuXG4gIGF3YWl0IGluc2VydEFycmF5cyh7XG4gICAgYWRhcHRlcixcbiAgICBhcnJheXM6IFtyb3dUb0luc2VydC5hcnJheXNdLFxuICAgIGRiLFxuICAgIHBhcmVudFJvd3M6IFtpbnNlcnRlZFJvd10sXG4gIH0pXG5cbiAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAvLyBJTlNFUlQgaGFzTWFueSBTRUxFQ1RTXG4gIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuICBmb3IgKGNvbnN0IFtzZWxlY3RUYWJsZU5hbWUsIHRhYmxlUm93c10gb2YgT2JqZWN0LmVudHJpZXMoc2VsZWN0c1RvSW5zZXJ0KSkge1xuICAgIGNvbnN0IHNlbGVjdFRhYmxlID0gYWRhcHRlci50YWJsZXNbc2VsZWN0VGFibGVOYW1lXVxuICAgIGlmIChvcGVyYXRpb24gPT09ICd1cGRhdGUnKSB7XG4gICAgICBhd2FpdCBkYi5kZWxldGUoc2VsZWN0VGFibGUpLndoZXJlKGVxKHNlbGVjdFRhYmxlLnBhcmVudCwgaW5zZXJ0ZWRSb3cuaWQpKVxuICAgIH1cbiAgICBhd2FpdCBkYi5pbnNlcnQoc2VsZWN0VGFibGUpLnZhbHVlcyh0YWJsZVJvd3MpLnJldHVybmluZygpXG4gIH1cblxuICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gIC8vIFJFVFJJRVZFIE5FV0xZIFVQREFURUQgUk9XXG4gIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuICBjb25zdCBmaW5kTWFueUFyZ3MgPSBidWlsZEZpbmRNYW55QXJncyh7XG4gICAgYWRhcHRlcixcbiAgICBkZXB0aDogMCxcbiAgICBmaWVsZHMsXG4gICAgdGFibGVOYW1lLFxuICB9KVxuXG4gIGZpbmRNYW55QXJncy53aGVyZSA9IGVxKGFkYXB0ZXIudGFibGVzW3RhYmxlTmFtZV0uaWQsIGluc2VydGVkUm93LmlkKVxuXG4gIGNvbnN0IGRvYyA9IGF3YWl0IGRiLnF1ZXJ5W3RhYmxlTmFtZV0uZmluZEZpcnN0KGZpbmRNYW55QXJncylcblxuICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gIC8vIFRSQU5TRk9STSBEQVRBXG4gIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuICBjb25zdCByZXN1bHQgPSB0cmFuc2Zvcm08VD4oe1xuICAgIGNvbmZpZzogYWRhcHRlci5wYXlsb2FkLmNvbmZpZyxcbiAgICBkYXRhOiBkb2MsXG4gICAgZmllbGRzLFxuICB9KVxuXG4gIHJldHVybiByZXN1bHRcbn1cbiJdLCJuYW1lcyI6WyJ1cHNlcnRSb3ciLCJpZCIsImFkYXB0ZXIiLCJkYXRhIiwiZGIiLCJmaWVsZHMiLCJvcGVyYXRpb24iLCJwYXRoIiwidGFibGVOYW1lIiwidXBzZXJ0VGFyZ2V0Iiwid2hlcmUiLCJyb3dUb0luc2VydCIsInRyYW5zZm9ybUZvcldyaXRlIiwiaW5zZXJ0ZWRSb3ciLCJ0YXJnZXQiLCJ0YWJsZXMiLCJyb3ciLCJpbnNlcnQiLCJ2YWx1ZXMiLCJvbkNvbmZsaWN0RG9VcGRhdGUiLCJzZXQiLCJyZXR1cm5pbmciLCJsb2NhbGVzVG9JbnNlcnQiLCJyZWxhdGlvbnNUb0luc2VydCIsIm51bWJlcnNUb0luc2VydCIsImJsb2Nrc1RvSW5zZXJ0Iiwic2VsZWN0c1RvSW5zZXJ0IiwiT2JqZWN0Iiwia2V5cyIsImxvY2FsZXMiLCJsZW5ndGgiLCJlbnRyaWVzIiwiZm9yRWFjaCIsImxvY2FsZSIsImxvY2FsZVJvdyIsIl9wYXJlbnRJRCIsIl9sb2NhbGUiLCJwdXNoIiwicmVsYXRpb25zaGlwcyIsInJlbGF0aW9uIiwicGFyZW50IiwibnVtYmVycyIsIm51bWJlclJvdyIsInNlbGVjdHMiLCJzZWxlY3RUYWJsZU5hbWUiLCJzZWxlY3RSb3dzIiwiYmxvY2tzIiwiYmxvY2tOYW1lIiwiYmxvY2tSb3ciLCJsb2NhbGVUYWJsZSIsImRlbGV0ZSIsImVxIiwicmVsYXRpb25zaGlwc1RhYmxlTmFtZSIsImRlbGV0ZUV4aXN0aW5nUm93c0J5UGF0aCIsImxvY2FsZUNvbHVtbk5hbWUiLCJwYXJlbnRDb2x1bW5OYW1lIiwicGFyZW50SUQiLCJwYXRoQ29sdW1uTmFtZSIsInJvd3MiLCJyZWxhdGlvbnNoaXBzVG9EZWxldGUiLCJudW1iZXJzVGFibGVOYW1lIiwiaW5zZXJ0ZWRCbG9ja1Jvd3MiLCJibG9ja1Jvd3MiLCJtYXAiLCJpIiwiYmxvY2tMb2NhbGVJbmRleE1hcCIsImJsb2NrTG9jYWxlUm93c1RvSW5zZXJ0IiwicmVkdWNlIiwiYWNjIiwiYmxvY2tMb2NhbGUiLCJibG9ja0xvY2FsZURhdGEiLCJpbnNlcnRBcnJheXMiLCJhcnJheXMiLCJwYXJlbnRSb3dzIiwiYXJyYXlUYWJsZU5hbWUiLCJkZWxldGVFeGlzdGluZ0FycmF5Um93cyIsInRhYmxlUm93cyIsInNlbGVjdFRhYmxlIiwiZmluZE1hbnlBcmdzIiwiYnVpbGRGaW5kTWFueUFyZ3MiLCJkZXB0aCIsImRvYyIsInF1ZXJ5IiwiZmluZEZpcnN0IiwicmVzdWx0IiwidHJhbnNmb3JtIiwiY29uZmlnIiwicGF5bG9hZCJdLCJtYXBwaW5ncyI6IkFBQUEsb0NBQW9DOzs7OytCQWV2QkE7OztlQUFBQTs7OzRCQVpNO21DQUtlO3NCQUNSO3VCQUNRO3lDQUNNOzBDQUNDOzhCQUNaO0FBRXRCLE1BQU1BLFlBQVksT0FBNkIsRUFDcERDLEVBQUUsRUFDRkMsT0FBTyxFQUNQQyxJQUFJLEVBQ0pDLEVBQUUsRUFDRkMsTUFBTSxFQUNOQyxTQUFTLEVBQ1RDLE9BQU8sRUFBRSxFQUNUQyxTQUFTLEVBQ1RDLFlBQVksRUFDWkMsS0FBSyxFQUNBO0lBQ0wsc0RBQXNEO0lBQ3RELHVEQUF1RDtJQUN2RCxNQUFNQyxjQUFjQyxJQUFBQSx3QkFBaUIsRUFBQztRQUNwQ1Q7UUFDQUU7UUFDQUU7UUFDQUM7SUFDRjtJQUVBLGdDQUFnQztJQUNoQyxJQUFJSztJQUVKLElBQUlQLGNBQWMsVUFBVTtRQUMxQixNQUFNUSxTQUFTTCxnQkFBZ0JQLFFBQVFhLE1BQU0sQ0FBQ1AsVUFBVSxDQUFDUCxFQUFFO1FBRTNELElBQUlBLElBQUk7WUFDTlUsWUFBWUssR0FBRyxDQUFDZixFQUFFLEdBQUdBO1lBQ3BCLENBQUNZLFlBQVksR0FBRyxNQUFNVCxHQUNwQmEsTUFBTSxDQUFDZixRQUFRYSxNQUFNLENBQUNQLFVBQVUsRUFDaENVLE1BQU0sQ0FBQ1AsWUFBWUssR0FBRyxFQUN0Qkcsa0JBQWtCLENBQUM7Z0JBQUVDLEtBQUtULFlBQVlLLEdBQUc7Z0JBQUVGO1lBQU8sR0FDbERPLFNBQVM7UUFDZCxPQUFPO1lBQ0osQ0FBQ1IsWUFBWSxHQUFHLE1BQU1ULEdBQ3BCYSxNQUFNLENBQUNmLFFBQVFhLE1BQU0sQ0FBQ1AsVUFBVSxFQUNoQ1UsTUFBTSxDQUFDUCxZQUFZSyxHQUFHLEVBQ3RCRyxrQkFBa0IsQ0FBQztnQkFBRUMs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
|
@@ -0,0 +1,64 @@
|
|
1
|
+
/* eslint-disable no-param-reassign */ "use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
3
|
+
value: true
|
4
|
+
});
|
5
|
+
Object.defineProperty(exports, "insertArrays", {
|
6
|
+
enumerable: true,
|
7
|
+
get: function() {
|
8
|
+
return insertArrays;
|
9
|
+
}
|
10
|
+
});
|
11
|
+
const insertArrays = async ({ adapter, arrays, db, parentRows })=>{
|
12
|
+
// Maintain a map of flattened rows by table
|
13
|
+
const rowsByTable = {};
|
14
|
+
arrays.forEach((arraysByTable, parentRowIndex)=>{
|
15
|
+
Object.entries(arraysByTable).forEach(([tableName, arrayRows])=>{
|
16
|
+
// If the table doesn't exist in map, initialize it
|
17
|
+
if (!rowsByTable[tableName]) {
|
18
|
+
rowsByTable[tableName] = {
|
19
|
+
arrays: [],
|
20
|
+
locales: [],
|
21
|
+
rows: []
|
22
|
+
};
|
23
|
+
}
|
24
|
+
const parentID = parentRows[parentRowIndex].id;
|
25
|
+
// Add any sub arrays that need to be created
|
26
|
+
// We will call this recursively below
|
27
|
+
arrayRows.forEach((arrayRow)=>{
|
28
|
+
if (Object.keys(arrayRow.arrays).length > 0) {
|
29
|
+
rowsByTable[tableName].arrays.push(arrayRow.arrays);
|
30
|
+
}
|
31
|
+
// Set up parent IDs for both row and locale row
|
32
|
+
arrayRow.row._parentID = parentID;
|
33
|
+
rowsByTable[tableName].rows.push(arrayRow.row);
|
34
|
+
Object.entries(arrayRow.locales).forEach(([arrayRowLocale, arrayRowLocaleData])=>{
|
35
|
+
arrayRowLocaleData._parentID = arrayRow.row.id;
|
36
|
+
arrayRowLocaleData._locale = arrayRowLocale;
|
37
|
+
rowsByTable[tableName].locales.push(arrayRowLocaleData);
|
38
|
+
});
|
39
|
+
});
|
40
|
+
});
|
41
|
+
});
|
42
|
+
// Insert all corresponding arrays
|
43
|
+
// (one insert per array table)
|
44
|
+
for (const [tableName, row] of Object.entries(rowsByTable)){
|
45
|
+
if (row.rows.length > 0) {
|
46
|
+
await db.insert(adapter.tables[tableName]).values(row.rows).returning();
|
47
|
+
}
|
48
|
+
// Insert locale rows
|
49
|
+
if (adapter.tables[`${tableName}_locales`] && row.locales.length > 0) {
|
50
|
+
await db.insert(adapter.tables[`${tableName}_locales`]).values(row.locales).returning();
|
51
|
+
}
|
52
|
+
// If there are sub arrays, call this function recursively
|
53
|
+
if (row.arrays.length > 0) {
|
54
|
+
await insertArrays({
|
55
|
+
adapter,
|
56
|
+
arrays: row.arrays,
|
57
|
+
db,
|
58
|
+
parentRows: row.rows
|
59
|
+
});
|
60
|
+
}
|
61
|
+
}
|
62
|
+
};
|
63
|
+
|
64
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91cHNlcnRSb3cvaW5zZXJ0QXJyYXlzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLXBhcmFtLXJlYXNzaWduICovXG5pbXBvcnQgdHlwZSB7IEFycmF5Um93VG9JbnNlcnQgfSBmcm9tICcuLi90cmFuc2Zvcm0vd3JpdGUvdHlwZXMnXG5pbXBvcnQgdHlwZSB7IERyaXp6bGVEQiwgUG9zdGdyZXNBZGFwdGVyIH0gZnJvbSAnLi4vdHlwZXMnXG5cbnR5cGUgQXJncyA9IHtcbiAgYWRhcHRlcjogUG9zdGdyZXNBZGFwdGVyXG4gIGFycmF5czoge1xuICAgIFt0YWJsZU5hbWU6IHN0cmluZ106IEFycmF5Um93VG9JbnNlcnRbXVxuICB9W11cbiAgZGI6IERyaXp6bGVEQlxuICBwYXJlbnRSb3dzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPltdXG59XG5cbnR5cGUgUm93c0J5VGFibGUgPSB7XG4gIFt0YWJsZU5hbWU6IHN0cmluZ106IHtcbiAgICBhcnJheXM6IHtcbiAgICAgIFt0YWJsZU5hbWU6IHN0cmluZ106IEFycmF5Um93VG9JbnNlcnRbXVxuICAgIH1bXVxuICAgIGxvY2FsZXM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+W11cbiAgICByb3dzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPltdXG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IGluc2VydEFycmF5cyA9IGFzeW5jICh7IGFkYXB0ZXIsIGFycmF5cywgZGIsIHBhcmVudFJvd3MgfTogQXJncyk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAvLyBNYWludGFpbiBhIG1hcCBvZiBmbGF0dGVuZWQgcm93cyBieSB0YWJsZVxuICBjb25zdCByb3dzQnlUYWJsZTogUm93c0J5VGFibGUgPSB7fVxuXG4gIGFycmF5cy5mb3JFYWNoKChhcnJheXNCeVRhYmxlLCBwYXJlbnRSb3dJbmRleCkgPT4ge1xuICAgIE9iamVjdC5lbnRyaWVzKGFycmF5c0J5VGFibGUpLmZvckVhY2goKFt0YWJsZU5hbWUsIGFycmF5Um93c10pID0+IHtcbiAgICAgIC8vIElmIHRoZSB0YWJsZSBkb2Vzbid0IGV4aXN0IGluIG1hcCwgaW5pdGlhbGl6ZSBpdFxuICAgICAgaWYgKCFyb3dzQnlUYWJsZVt0YWJsZU5hbWVdKSB7XG4gICAgICAgIHJvd3NCeVRhYmxlW3RhYmxlTmFtZV0gPSB7XG4gICAgICAgICAgYXJyYXlzOiBbXSxcbiAgICAgICAgICBsb2NhbGVzOiBbXSxcbiAgICAgICAgICByb3dzOiBbXSxcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBjb25zdCBwYXJlbnRJRCA9IHBhcmVudFJvd3NbcGFyZW50Um93SW5kZXhdLmlkXG5cbiAgICAgIC8vIEFkZCBhbnkgc3ViIGFycmF5cyB0aGF0IG5lZWQgdG8gYmUgY3JlYXRlZFxuICAgICAgLy8gV2Ugd2lsbCBjYWxsIHRoaXMgcmVjdXJzaXZlbHkgYmVsb3dcbiAgICAgIGFycmF5Um93cy5mb3JFYWNoKChhcnJheVJvdykgPT4ge1xuICAgICAgICBpZiAoT2JqZWN0LmtleXMoYXJyYXlSb3cuYXJyYXlzKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgcm93c0J5VGFibGVbdGFibGVOYW1lXS5hcnJheXMucHVzaChhcnJheVJvdy5hcnJheXMpXG4gICAgICAgIH1cblxuICAgICAgICAvLyBTZXQgdXAgcGFyZW50IElEcyBmb3IgYm90aCByb3cgYW5kIGxvY2FsZSByb3dcbiAgICAgICAgYXJyYXlSb3cucm93Ll9wYXJlbnRJRCA9IHBhcmVudElEXG4gICAgICAgIHJvd3NCeVRhYmxlW3RhYmxlTmFtZV0ucm93cy5wdXNoKGFycmF5Um93LnJvdylcblxuICAgICAgICBPYmplY3QuZW50cmllcyhhcnJheVJvdy5sb2NhbGVzKS5mb3JFYWNoKChbYXJyYXlSb3dMb2NhbGUsIGFycmF5Um93TG9jYWxlRGF0YV0pID0+IHtcbiAgICAgICAgICBhcnJheVJvd0xvY2FsZURhdGEuX3BhcmVudElEID0gYXJyYXlSb3cucm93LmlkXG4gICAgICAgICAgYXJyYXlSb3dMb2NhbGVEYXRhLl9sb2NhbGUgPSBhcnJheVJvd0xvY2FsZVxuICAgICAgICAgIHJvd3NCeVRhYmxlW3RhYmxlTmFtZV0ubG9jYWxlcy5wdXNoKGFycmF5Um93TG9jYWxlRGF0YSlcbiAgICAgICAgfSlcbiAgICAgIH0pXG4gICAgfSlcbiAgfSlcblxuICAvLyBJbnNlcnQgYWxsIGNvcnJlc3BvbmRpbmcgYXJyYXlzXG4gIC8vIChvbmUgaW5zZXJ0IHBlciBhcnJheSB0YWJsZSlcbiAgZm9yIChjb25zdCBbdGFibGVOYW1lLCByb3ddIG9mIE9iamVjdC5lbnRyaWVzKHJvd3NCeVRhYmxlKSkge1xuICAgIGlmIChyb3cucm93cy5sZW5ndGggPiAwKSB7XG4gICAgICBhd2FpdCBkYi5pbnNlcnQoYWRhcHRlci50YWJsZXNbdGFibGVOYW1lXSkudmFsdWVzKHJvdy5yb3dzKS5yZXR1cm5pbmcoKVxuICAgIH1cblxuICAgIC8vIEluc2VydCBsb2NhbGUgcm93c1xuICAgIGlmIChhZGFwdGVyLnRhYmxlc1tgJHt0YWJsZU5hbWV9X2xvY2FsZXNgXSAmJiByb3cubG9jYWxlcy5sZW5ndGggPiAwKSB7XG4gICAgICBhd2FpdCBkYi5pbnNlcnQoYWRhcHRlci50YWJsZXNbYCR7dGFibGVOYW1lfV9sb2NhbGVzYF0pLnZhbHVlcyhyb3cubG9jYWxlcykucmV0dXJuaW5nKClcbiAgICB9XG5cbiAgICAvLyBJZiB0aGVyZSBhcmUgc3ViIGFycmF5cywgY2FsbCB0aGlzIGZ1bmN0aW9uIHJlY3Vyc2l2ZWx5XG4gICAgaWYgKHJvdy5hcnJheXMubGVuZ3RoID4gMCkge1xuICAgICAgYXdhaXQgaW5zZXJ0QXJyYXlzKHtcbiAgICAgICAgYWRhcHRlcixcbiAgICAgICAgYXJyYXlzOiByb3cuYXJyYXlzLFxuICAgICAgICBkYixcbiAgICAgICAgcGFyZW50Um93czogcm93LnJvd3MsXG4gICAgICB9KVxuICAgIH1cbiAgfVxufVxuIl0sIm5hbWVzIjpbImluc2VydEFycmF5cyIsImFkYXB0ZXIiLCJhcnJheXMiLCJkYiIsInBhcmVudFJvd3MiLCJyb3dzQnlUYWJsZSIsImZvckVhY2giLCJhcnJheXNCeVRhYmxlIiwicGFyZW50Um93SW5kZXgiLCJPYmplY3QiLCJlbnRyaWVzIiwidGFibGVOYW1lIiwiYXJyYXlSb3dzIiwibG9jYWxlcyIsInJvd3MiLCJwYXJlbnRJRCIsImlkIiwiYXJyYXlSb3ciLCJrZXlzIiwibGVuZ3RoIiwicHVzaCIsInJvdyIsIl9wYXJlbnRJRCIsImFycmF5Um93TG9jYWxlIiwiYXJyYXlSb3dMb2NhbGVEYXRhIiwiX2xvY2FsZSIsImluc2VydCIsInRhYmxlcyIsInZhbHVlcyIsInJldHVybmluZyJdLCJtYXBwaW5ncyI6IkFBQUEsb0NBQW9DOzs7OytCQXVCdkJBOzs7ZUFBQUE7OztBQUFOLE1BQU1BLGVBQWUsT0FBTyxFQUFFQyxPQUFPLEVBQUVDLE1BQU0sRUFBRUMsRUFBRSxFQUFFQyxVQUFVLEVBQVE7SUFDMUUsNENBQTRDO0lBQzVDLE1BQU1DLGNBQTJCLENBQUM7SUFFbENILE9BQU9JLE9BQU8sQ0FBQyxDQUFDQyxlQUFlQztRQUM3QkMsT0FBT0MsT0FBTyxDQUFDSCxlQUFlRCxPQUFPLENBQUMsQ0FBQyxDQUFDSyxXQUFXQyxVQUFVO1lBQzNELG1EQUFtRDtZQUNuRCxJQUFJLENBQUNQLFdBQVcsQ0FBQ00sVUFBVSxFQUFFO2dCQUMzQk4sV0FBVyxDQUFDTSxVQUFVLEdBQUc7b0JBQ3ZCVCxRQUFRLEVBQUU7b0JBQ1ZXLFNBQVMsRUFBRTtvQkFDWEMsTUFBTSxFQUFFO2dCQUNWO1lBQ0Y7WUFFQSxNQUFNQyxXQUFXWCxVQUFVLENBQUNJLGVBQWUsQ0FBQ1EsRUFBRTtZQUU5Qyw2Q0FBNkM7WUFDN0Msc0NBQXNDO1lBQ3RDSixVQUFVTixPQUFPLENBQUMsQ0FBQ1c7Z0JBQ2pCLElBQUlSLE9BQU9TLElBQUksQ0FBQ0QsU0FBU2YsTUFBTSxFQUFFaUIsTUFBTSxHQUFHLEdBQUc7b0JBQzNDZCxXQUFXLENBQUNNLFVBQVUsQ0FBQ1QsTUFBTSxDQUFDa0IsSUFBSSxDQUFDSCxTQUFTZixNQUFNO2dCQUNwRDtnQkFFQSxnREFBZ0Q7Z0JBQ2hEZSxTQUFTSSxHQUFHLENBQUNDLFNBQVMsR0FBR1A7Z0JBQ3pCVixXQUFXLENBQUNNLFVBQVUsQ0FBQ0csSUFBSSxDQUFDTSxJQUFJLENBQUNILFNBQVNJLEdBQUc7Z0JBRTdDWixPQUFPQyxPQUFPLENBQUNPLFNBQVNKLE9BQU8sRUFBRVAsT0FBTyxDQUFDLENBQUMsQ0FBQ2lCLGdCQUFnQkMsbUJBQW1CO29CQUM1RUEsbUJBQW1CRixTQUFTLEdBQUdMLFNBQVNJLEdBQUcsQ0FBQ0wsRUFBRTtvQkFDOUNRLG1CQUFtQkMsT0FBTyxHQUFHRjtvQkFDN0JsQixXQUFXLENBQUNNLFVBQVUsQ0FBQ0UsT0FBTyxDQUFDTyxJQUFJLENBQUNJO2dCQUN0QztZQUNGO1FBQ0Y7SUFDRjtJQUVBLGtDQUFrQztJQUNsQywrQkFBK0I7SUFDL0IsS0FBSyxNQUFNLENBQUNiLFdBQVdVLElBQUksSUFBSVosT0FBT0MsT0FBTyxDQUFDTCxhQUFjO1FBQzFELElBQUlnQixJQUFJUCxJQUFJLENBQUNLLE1BQU0sR0FBRyxHQUFHO1lBQ3ZCLE1BQU1oQixHQUFHdUIsTUFBTSxDQUFDekIsUUFBUTBCLE1BQU0sQ0FBQ2hCLFVBQVUsRUFBRWlCLE1BQU0sQ0FBQ1AsSUFBSVAsSUFBSSxFQUFFZSxTQUFTO1FBQ3ZFO1FBRUEscUJBQXFCO1FBQ3JCLElBQUk1QixRQUFRMEIsTUFBTSxDQUFDLENBQUMsRUFBRWhCLFVBQVUsUUFBUSxDQUFDLENBQUMsSUFBSVUsSUFBSVIsT0FBTyxDQUFDTSxNQUFNLEdBQUcsR0FBRztZQUNwRSxNQUFNaEIsR0FBR3VCLE1BQU0sQ0FBQ3pCLFFBQVEwQixNQUFNLENBQUMsQ0FBQyxFQUFFaEIsVUFBVSxRQUFRLENBQUMsQ0FBQyxFQUFFaUIsTUFBTSxDQUFDUCxJQUFJUixPQUFPLEVBQUVnQixTQUFTO1FBQ3ZGO1FBRUEsMERBQTBEO1FBQzFELElBQUlSLElBQUluQixNQUFNLENBQUNpQixNQUFNLEdBQUcsR0FBRztZQUN6QixNQUFNbkIsYUFBYTtnQkFDakJDO2dCQUNBQyxRQUFRbUIsSUFBSW5CLE1BQU07Z0JBQ2xCQztnQkFDQUMsWUFBWWlCLElBQUlQLElBQUk7WUFDdEI7UUFDRjtJQUNGO0FBQ0YifQ==
|