@payloadcms/db-postgres 3.0.0-alpha.40 → 3.0.0-alpha.42
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/connect.d.ts.map +1 -1
- package/dist/connect.js +4 -48
- package/dist/connect.js.map +1 -0
- package/dist/create.js +1 -1
- package/dist/create.js.map +1 -0
- package/dist/createGlobal.js +1 -1
- package/dist/createGlobal.js.map +1 -0
- package/dist/createGlobalVersion.js +1 -1
- package/dist/createGlobalVersion.js.map +1 -0
- package/dist/createMigration.js +1 -1
- package/dist/createMigration.js.map +1 -0
- package/dist/createVersion.js +1 -1
- package/dist/createVersion.js.map +1 -0
- package/dist/deleteMany.js +1 -1
- package/dist/deleteMany.js.map +1 -0
- package/dist/deleteOne.js +1 -1
- package/dist/deleteOne.js.map +1 -0
- package/dist/deleteVersions.js +1 -1
- package/dist/deleteVersions.js.map +1 -0
- package/dist/destroy.d.ts.map +1 -1
- package/dist/destroy.js +8 -3
- package/dist/destroy.js.map +1 -0
- package/dist/find/buildFindManyArgs.js +1 -1
- package/dist/find/buildFindManyArgs.js.map +1 -0
- package/dist/find/chainMethods.js +1 -1
- package/dist/find/chainMethods.js.map +1 -0
- package/dist/find/findMany.js +1 -1
- package/dist/find/findMany.js.map +1 -0
- package/dist/find/traverseFields.js +1 -1
- package/dist/find/traverseFields.js.map +1 -0
- package/dist/find.js +1 -1
- package/dist/find.js.map +1 -0
- package/dist/findGlobal.js +1 -1
- package/dist/findGlobal.js.map +1 -0
- package/dist/findGlobalVersions.js +1 -1
- package/dist/findGlobalVersions.js.map +1 -0
- package/dist/findOne.js +1 -1
- package/dist/findOne.js.map +1 -0
- package/dist/findVersions.js +1 -1
- package/dist/findVersions.js.map +1 -0
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -0
- package/dist/init.js +1 -1
- package/dist/init.js.map +1 -0
- package/dist/migrate.js +1 -1
- package/dist/migrate.js.map +1 -0
- package/dist/migrateDown.js +1 -1
- package/dist/migrateDown.js.map +1 -0
- package/dist/migrateFresh.js +1 -1
- package/dist/migrateFresh.js.map +1 -0
- package/dist/migrateRefresh.js +1 -1
- package/dist/migrateRefresh.js.map +1 -0
- package/dist/migrateReset.js +1 -1
- package/dist/migrateReset.js.map +1 -0
- package/dist/migrateStatus.js +1 -1
- package/dist/migrateStatus.js.map +1 -0
- package/dist/queries/buildAndOrConditions.js +1 -1
- package/dist/queries/buildAndOrConditions.js.map +1 -0
- package/dist/queries/buildQuery.js +1 -1
- package/dist/queries/buildQuery.js.map +1 -0
- package/dist/queries/createJSONQuery/convertPathToJSONTraversal.js +1 -1
- package/dist/queries/createJSONQuery/convertPathToJSONTraversal.js.map +1 -0
- package/dist/queries/createJSONQuery/formatJSONPathSegment.js +1 -1
- package/dist/queries/createJSONQuery/formatJSONPathSegment.js.map +1 -0
- package/dist/queries/createJSONQuery/index.js +1 -1
- package/dist/queries/createJSONQuery/index.js.map +1 -0
- package/dist/queries/getTableColumnFromPath.js +1 -1
- package/dist/queries/getTableColumnFromPath.js.map +1 -0
- package/dist/queries/operatorMap.js +1 -1
- package/dist/queries/operatorMap.js.map +1 -0
- package/dist/queries/parseParams.js +1 -1
- package/dist/queries/parseParams.js.map +1 -0
- package/dist/queries/sanitizeQueryValue.js +1 -1
- package/dist/queries/sanitizeQueryValue.js.map +1 -0
- package/dist/queryDrafts.js +1 -1
- package/dist/queryDrafts.js.map +1 -0
- package/dist/schema/build.js +1 -1
- package/dist/schema/build.js.map +1 -0
- package/dist/schema/createIndex.js +1 -1
- package/dist/schema/createIndex.js.map +1 -0
- package/dist/schema/idToUUID.js +1 -1
- package/dist/schema/idToUUID.js.map +1 -0
- package/dist/schema/parentIDColumnMap.js +1 -1
- package/dist/schema/parentIDColumnMap.js.map +1 -0
- package/dist/schema/setColumnID.js +1 -1
- package/dist/schema/setColumnID.js.map +1 -0
- package/dist/schema/traverseFields.js +1 -1
- package/dist/schema/traverseFields.js.map +1 -0
- package/dist/schema/validateExistingBlockIsIdentical.js +1 -1
- package/dist/schema/validateExistingBlockIsIdentical.js.map +1 -0
- package/dist/transactions/beginTransaction.js +1 -1
- package/dist/transactions/beginTransaction.js.map +1 -0
- package/dist/transactions/commitTransaction.js +1 -1
- package/dist/transactions/commitTransaction.js.map +1 -0
- package/dist/transactions/rollbackTransaction.js +1 -1
- package/dist/transactions/rollbackTransaction.js.map +1 -0
- package/dist/transform/read/hasManyNumber.js +1 -1
- package/dist/transform/read/hasManyNumber.js.map +1 -0
- package/dist/transform/read/hasManyText.js +1 -1
- package/dist/transform/read/hasManyText.js.map +1 -0
- package/dist/transform/read/index.js +1 -1
- package/dist/transform/read/index.js.map +1 -0
- package/dist/transform/read/relationship.js +1 -1
- package/dist/transform/read/relationship.js.map +1 -0
- package/dist/transform/read/traverseFields.js +1 -1
- package/dist/transform/read/traverseFields.js.map +1 -0
- package/dist/transform/write/array.js +1 -1
- package/dist/transform/write/array.js.map +1 -0
- package/dist/transform/write/blocks.js +1 -1
- package/dist/transform/write/blocks.js.map +1 -0
- package/dist/transform/write/index.js +1 -1
- package/dist/transform/write/index.js.map +1 -0
- package/dist/transform/write/numbers.js +1 -1
- package/dist/transform/write/numbers.js.map +1 -0
- package/dist/transform/write/relationships.js +1 -1
- package/dist/transform/write/relationships.js.map +1 -0
- package/dist/transform/write/selects.js +1 -1
- package/dist/transform/write/selects.js.map +1 -0
- package/dist/transform/write/texts.js +1 -1
- package/dist/transform/write/texts.js.map +1 -0
- package/dist/transform/write/traverseFields.js +1 -1
- package/dist/transform/write/traverseFields.js.map +1 -0
- package/dist/transform/write/types.js +1 -1
- package/dist/transform/write/types.js.map +1 -0
- package/dist/types.js +1 -1
- package/dist/types.js.map +1 -0
- package/dist/update.js +1 -1
- package/dist/update.js.map +1 -0
- package/dist/updateGlobal.js +1 -1
- package/dist/updateGlobal.js.map +1 -0
- package/dist/updateGlobalVersion.js +1 -1
- package/dist/updateGlobalVersion.js.map +1 -0
- package/dist/updateVersion.js +1 -1
- package/dist/updateVersion.js.map +1 -0
- package/dist/upsertRow/deleteExistingArrayRows.js +1 -1
- package/dist/upsertRow/deleteExistingArrayRows.js.map +1 -0
- package/dist/upsertRow/deleteExistingRowsByPath.js +1 -1
- package/dist/upsertRow/deleteExistingRowsByPath.js.map +1 -0
- package/dist/upsertRow/index.js +1 -1
- package/dist/upsertRow/index.js.map +1 -0
- package/dist/upsertRow/insertArrays.js +1 -1
- package/dist/upsertRow/insertArrays.js.map +1 -0
- package/dist/upsertRow/types.js +1 -1
- package/dist/upsertRow/types.js.map +1 -0
- package/dist/utilities/appendPrefixToKeys.js +1 -1
- package/dist/utilities/appendPrefixToKeys.js.map +1 -0
- package/dist/utilities/createBlocksMap.js +1 -1
- package/dist/utilities/createBlocksMap.js.map +1 -0
- package/dist/utilities/createMigrationTable.js +1 -1
- package/dist/utilities/createMigrationTable.js.map +1 -0
- package/dist/utilities/createRelationshipMap.js +1 -1
- package/dist/utilities/createRelationshipMap.js.map +1 -0
- package/dist/utilities/hasLocalesTable.js +1 -1
- package/dist/utilities/hasLocalesTable.js.map +1 -0
- package/dist/utilities/isArrayOfRows.js +1 -1
- package/dist/utilities/isArrayOfRows.js.map +1 -0
- package/dist/utilities/migrationTableExists.js +1 -1
- package/dist/utilities/migrationTableExists.js.map +1 -0
- package/dist/utilities/parseError.js +1 -1
- package/dist/utilities/parseError.js.map +1 -0
- package/dist/utilities/pushDevSchema.d.ts +9 -0
- package/dist/utilities/pushDevSchema.d.ts.map +1 -0
- package/dist/utilities/pushDevSchema.js +56 -0
- package/dist/utilities/pushDevSchema.js.map +1 -0
- package/package.json +3 -3
@@ -8,4 +8,4 @@ export const transformTexts = ({ baseRow, data, texts })=>{
|
|
8
8
|
});
|
9
9
|
};
|
10
10
|
|
11
|
-
//# sourceMappingURL=
|
11
|
+
//# sourceMappingURL=texts.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../../../src/transform/write/texts.ts"],"sourcesContent":["type Args = {\n baseRow: Record<string, unknown>\n data: unknown[]\n texts: Record<string, unknown>[]\n}\n\nexport const transformTexts = ({ baseRow, data, texts }: Args) => {\n data.forEach((val, i) => {\n texts.push({\n ...baseRow,\n text: val,\n order: i + 1,\n })\n })\n}\n"],"names":["transformTexts","baseRow","data","texts","forEach","val","i","push","text","order"],"mappings":"AAMA,OAAO,MAAMA,iBAAiB,CAAC,EAAEC,OAAO,EAAEC,IAAI,EAAEC,KAAK,EAAQ;IAC3DD,KAAKE,OAAO,CAAC,CAACC,KAAKC;QACjBH,MAAMI,IAAI,CAAC;YACT,GAAGN,OAAO;YACVO,MAAMH;YACNI,OAAOH,IAAI;QACb;IACF;AACF,EAAC"}
|
@@ -425,4 +425,4 @@ export const traverseFields = ({ adapter, arrays, baseTableName, blocks, blocksT
|
|
425
425
|
});
|
426
426
|
};
|
427
427
|
|
428
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90cmFuc2Zvcm0vd3JpdGUvdHJhdmVyc2VGaWVsZHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tcGFyYW0tcmVhc3NpZ24gKi9cbmltcG9ydCB0eXBlIHsgRmllbGQgfSBmcm9tICdwYXlsb2FkL3R5cGVzJ1xuXG5pbXBvcnQgeyBmaWVsZEFmZmVjdHNEYXRhIH0gZnJvbSAncGF5bG9hZC90eXBlcydcbmltcG9ydCB0b1NuYWtlQ2FzZSBmcm9tICd0by1zbmFrZS1jYXNlJ1xuXG5pbXBvcnQgdHlwZSB7IFBvc3RncmVzQWRhcHRlciB9IGZyb20gJy4uLy4uL3R5cGVzLmpzJ1xuaW1wb3J0IHR5cGUgeyBBcnJheVJvd1RvSW5zZXJ0LCBCbG9ja1Jvd1RvSW5zZXJ0LCBSZWxhdGlvbnNoaXBUb0RlbGV0ZSB9IGZyb20gJy4vdHlwZXMuanMnXG5cbmltcG9ydCB7IGlzQXJyYXlPZlJvd3MgfSBmcm9tICcuLi8uLi91dGlsaXRpZXMvaXNBcnJheU9mUm93cy5qcydcbmltcG9ydCB7IHRyYW5zZm9ybUFycmF5IH0gZnJvbSAnLi9hcnJheS5qcydcbmltcG9ydCB7IHRyYW5zZm9ybUJsb2NrcyB9IGZyb20gJy4vYmxvY2tzLmpzJ1xuaW1wb3J0IHsgdHJhbnNmb3JtTnVtYmVycyB9IGZyb20gJy4vbnVtYmVycy5qcydcbmltcG9ydCB7IHRyYW5zZm9ybVJlbGF0aW9uc2hpcCB9IGZyb20gJy4vcmVsYXRpb25zaGlwcy5qcydcbmltcG9ydCB7IHRyYW5zZm9ybVNlbGVjdHMgfSBmcm9tICcuL3NlbGVjdHMuanMnXG5pbXBvcnQgeyB0cmFuc2Zvcm1UZXh0cyB9IGZyb20gJy4vdGV4dHMuanMnXG5cbnR5cGUgQXJncyA9IHtcbiAgYWRhcHRlcjogUG9zdGdyZXNBZGFwdGVyXG4gIGFycmF5czoge1xuICAgIFt0YWJsZU5hbWU6IHN0cmluZ106IEFycmF5Um93VG9JbnNlcnRbXVxuICB9XG4gIC8qKlxuICAgKiBUaGlzIGlzIHRoZSBuYW1lIG9mIHRoZSBiYXNlIHRhYmxlXG4gICAqL1xuICBiYXNlVGFibGVOYW1lOiBzdHJpbmdcbiAgYmxvY2tzOiB7XG4gICAgW2Jsb2NrVHlwZTogc3RyaW5nXTogQmxvY2tSb3dUb0luc2VydFtdXG4gIH1cbiAgYmxvY2tzVG9EZWxldGU6IFNldDxzdHJpbmc+XG4gIC8qKlxuICAgKiBBIHNuYWtlLWNhc2UgZmllbGQgcHJlZml4LCByZXByZXNlbnRpbmcgcHJpb3IgZmllbGRzXG4gICAqIEV4OiBteV9ncm91cF9teV9uYW1lZF90YWJfXG4gICAqL1xuICBjb2x1bW5QcmVmaXg6IHN0cmluZ1xuICBkYXRhOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICBleGlzdGluZ0xvY2FsZXM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPltdXG4gIC8qKlxuICAgKiBBIHByZWZpeCB0aGF0IHdpbGwgcmV0YWluIGNhbWVsLWNhc2UgZm9ybWF0dGluZywgcmVwcmVzZW50aW5nIHByaW9yIGZpZWxkc1xuICAgKiBFeDogbXlHcm91cF9teU5hbWVkVGFiX1xuICAgKi9cbiAgZmllbGRQcmVmaXg6IHN0cmluZ1xuICBmaWVsZHM6IEZpZWxkW11cbiAgZm9yY2VkTG9jYWxlPzogc3RyaW5nXG4gIGxvY2FsZXM6IHtcbiAgICBbbG9jYWxlOiBzdHJpbmddOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICB9XG4gIHRleHRzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPltdXG4gIG51bWJlcnM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+W11cbiAgLyoqXG4gICAqIFRoaXMgaXMgdGhlIG5hbWUgb2YgdGhlIHBhcmVudCB0YWJsZVxuICAgKi9cbiAgcGFyZW50VGFibGVOYW1lOiBzdHJpbmdcbiAgcGF0aDogc3RyaW5nXG4gIHJlbGF0aW9uc2hpcHM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+W11cbiAgcmVsYXRpb25zaGlwc1RvRGVsZXRlOiBSZWxhdGlvbnNoaXBUb0RlbGV0ZVtdXG4gIHJvdzogUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgc2VsZWN0czoge1xuICAgIFt0YWJsZU5hbWU6IHN0cmluZ106IFJlY29yZDxzdHJpbmcsIHVua25vd24+W11cbiAgfVxufVxuXG5leHBvcnQgY29uc3QgdHJhdmVyc2VGaWVsZHMgPSAoe1xuICBhZGFwdGVyLFxuICBhcnJheXMsXG4gIGJhc2VUYWJsZU5hbWUsXG4gIGJsb2NrcyxcbiAgYmxvY2tzVG9EZWxldGUsXG4gIGNvbHVtblByZWZpeCxcbiAgZGF0YSxcbiAgZXhpc3RpbmdMb2NhbGVzLFxuICBmaWVsZFByZWZpeCxcbiAgZmllbGRzLFxuICBmb3JjZWRMb2NhbGUsXG4gIGxvY2FsZXMsXG4gIHRleHRzLFxuICBudW1iZXJzLFxuICBwYXJlbnRUYWJsZU5hbWUsXG4gIHBhdGgsXG4gIHJlbGF0aW9uc2hpcHMsXG4gIHJlbGF0aW9uc2hpcHNUb0RlbGV0ZSxcbiAgcm93LFxuICBzZWxlY3RzLFxufTogQXJncykgPT4ge1xuICBmaWVsZHMuZm9yRWFjaCgoZmllbGQpID0+IHtcbiAgICBsZXQgY29sdW1uTmFtZSA9ICcnXG4gICAgbGV0IGZpZWxkTmFtZSA9ICcnXG4gICAgbGV0IGZpZWxkRGF0YTogdW5rbm93blxuXG4gICAgaWYgKGZpZWxkQWZmZWN0c0RhdGEoZmllbGQpKSB7XG4gICAgICBjb2x1bW5OYW1lID0gYCR7Y29sdW1uUHJlZml4IHx8ICcnfSR7dG9TbmFrZUNhc2UoZmllbGQubmFtZSl9YFxuICAgICAgZmllbGROYW1lID0gYCR7ZmllbGRQcmVmaXggfHwgJyd9JHtmaWVsZC5uYW1lfWBcbiAgICAgIGZpZWxkRGF0YSA9IGRhdGFbZmllbGQubmFtZV1cbiAgICB9XG5cbiAgICBpZiAoZmllbGQudHlwZSA9PT0gJ2FycmF5Jykge1xuICAgICAgY29uc3QgYXJyYXlUYWJsZU5hbWUgPSBgJHtwYXJlbnRUYWJsZU5hbWV9XyR7Y29sdW1uTmFtZX1gXG5cbiAgICAgIGlmICghYXJyYXlzW2FycmF5VGFibGVOYW1lXSkgYXJyYXlzW2FycmF5VGFibGVOYW1lXSA9IFtdXG5cbiAgICAgIGlmIChmaWVsZC5sb2NhbGl6ZWQpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBkYXRhW2ZpZWxkLm5hbWVdID09PSAnb2JqZWN0JyAmJiBkYXRhW2ZpZWxkLm5hbWVdICE9PSBudWxsKSB7XG4gICAgICAgICAgT2JqZWN0LmVudHJpZXMoZGF0YVtmaWVsZC5uYW1lXSkuZm9yRWFjaCgoW2xvY2FsZUtleSwgbG9jYWxlRGF0YV0pID0+IHtcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGxvY2FsZURhdGEpKSB7XG4gICAgICAgICAgICAgIGNvbnN0IG5ld1Jvd3MgPSB0cmFuc2Zvcm1BcnJheSh7XG4gICAgICAgICAgICAgICAgYWRhcHRlcixcbiAgICAgICAgICAgICAgICBhcnJheVRhYmxlTmFtZSxcbiAgICAgICAgICAgICAgICBiYXNlVGFibGVOYW1lLFxuICAgICAgICAgICAgICAgIGJsb2NrcyxcbiAgICAgICAgICAgICAgICBibG9ja3NUb0RlbGV0ZSxcbiAgICAgICAgICAgICAgICBkYXRhOiBsb2NhbGVEYXRhLFxuICAgICAgICAgICAgICAgIGZpZWxkLFxuICAgICAgICAgICAgICAgIGxvY2FsZTogbG9jYWxlS2V5LFxuICAgICAgICAgICAgICAgIHRleHRzLFxuICAgICAgICAgICAgICAgIG51bWJlcnMsXG4gICAgICAgICAgICAgICAgcGF0aCxcbiAgICAgICAgICAgICAgICByZWxhdGlvbnNoaXBzLFxuICAgICAgICAgICAgICAgIHJlbGF0aW9uc2hpcHNUb0RlbGV0ZSxcbiAgICAgICAgICAgICAgICBzZWxlY3RzLFxuICAgICAgICAgICAgICB9KVxuXG4gICAgICAgICAgICAgIGFycmF5c1thcnJheVRhYmxlTmFtZV0gPSBhcnJheXNbYXJyYXlUYWJsZU5hbWVdLmNvbmNhdChuZXdSb3dzKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IG5ld1Jvd3MgPSB0cmFuc2Zvcm1BcnJheSh7XG4gICAgICAgICAgYWRhcHRlcixcbiAgICAgICAgICBhcnJheVRhYmxlTmFtZSxcbiAgICAgICAgICBiYXNlVGFibGVOYW1lLFxuICAgICAgICAgIGJsb2NrcyxcbiAgICAgICAgICBibG9ja3NUb0RlbGV0ZSxcbiAgICAgICAgICBkYXRhOiBkYXRhW2ZpZWxkLm5hbWVdLFxuICAgICAgICAgIGZpZWxkLFxuICAgICAgICAgIHRleHRzLFxuICAgICAgICAgIG51bWJlcnMsXG4gICAgICAgICAgcGF0aCxcbiAgICAgICAgICByZWxhdGlvbnNoaXBzLFxuICAgICAgICAgIHJlbGF0aW9uc2hpcHNUb0RlbGV0ZSxcbiAgICAgICAgICBzZWxlY3RzLFxuICAgICAgICB9KVxuXG4gICAgICAgIGFycmF5c1thcnJheVRhYmxlTmFtZV0gPSBhcnJheXNbYXJyYXlUYWJsZU5hbWVdLmNvbmNhdChuZXdSb3dzKVxuICAgICAgfVxuXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAoZmllbGQudHlwZSA9PT0gJ2Jsb2NrcycpIHtcbiAgICAgIGZpZWxkLmJsb2Nrcy5mb3JFYWNoKCh7IHNsdWcgfSkgPT4ge1xuICAgICAgICBibG9ja3NUb0RlbGV0ZS5hZGQodG9TbmFrZUNhc2Uoc2x1ZykpXG4gICAgICB9KVxuXG4gICAgICBpZiAoZmllbGQubG9jYWxpemVkKSB7XG4gICAgICAgIGlmICh0eXBlb2YgZGF0YVtmaWVsZC5uYW1lXSA9PT0gJ29iamVjdCcgJiYgZGF0YVtmaWVsZC5uYW1lXSAhPT0gbnVsbCkge1xuICAgICAgICAgIE9iamVjdC5lbnRyaWVzKGRhdGFbZmllbGQubmFtZV0pLmZvckVhY2goKFtsb2NhbGVLZXksIGxvY2FsZURhdGFdKSA9PiB7XG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShsb2NhbGVEYXRhKSkge1xuICAgICAgICAgICAgICB0cmFuc2Zvcm1CbG9ja3Moe1xuICAgICAgICAgICAgICAgIGFkYXB0ZXIsXG4gICAgICAgICAgICAgICAgYmFzZVRhYmxlTmFtZSxcbiAgICAgICAgICAgICAgICBibG9ja3MsXG4gICAgICAgICAgICAgICAgYmxvY2tzVG9EZWxldGUsXG4gICAgICAgICAgICAgICAgZGF0YTogbG9jYWxlRGF0YSxcbiAgICAgICAgICAgICAgICBmaWVsZCxcbiAgICAgICAgICAgICAgICBsb2NhbGU6IGxvY2FsZUtleSxcbiAgICAgICAgICAgICAgICB0ZXh0cyxcbiAgICAgICAgICAgICAgICBudW1iZXJzLFxuICAgICAgICAgICAgICAgIHBhdGgsXG4gICAgICAgICAgICAgICAgcmVsYXRpb25zaGlwcyxcbiAgICAgICAgICAgICAgICByZWxhdGlvbnNoaXBzVG9EZWxldGUsXG4gICAgICAgICAgICAgICAgc2VsZWN0cyxcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGlzQXJyYXlPZlJvd3MoZmllbGREYXRhKSkge1xuICAgICAgICB0cmFuc2Zvcm1CbG9ja3Moe1xuICAgICAgICAgIGFkYXB0ZXIsXG4gICAgICAgICAgYmFzZVRhYmxlTmFtZSxcbiAgICAgICAgICBibG9ja3MsXG4gICAgICAgICAgYmxvY2tzVG9EZWxldGUsXG4gICAgICAgICAgZGF0YTogZmllbGREYXRhLFxuICAgICAgICAgIGZpZWxkLFxuICAgICAgICAgIHRleHRzLFxuICAgICAgICAgIG51bWJlcnMsXG4gICAgICAgICAgcGF0aCxcbiAgICAgICAgICByZWxhdGlvbnNoaXBzLFxuICAgICAgICAgIHJlbGF0aW9uc2hpcHNUb0RlbGV0ZSxcbiAgICAgICAgICBzZWxlY3RzLFxuICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAoZmllbGQudHlwZSA9PT0gJ2dyb3VwJykge1xuICAgICAgaWYgKHR5cGVvZiBkYXRhW2ZpZWxkLm5hbWVdID09PSAnb2JqZWN0JyAmJiBkYXRhW2ZpZWxkLm5hbWVdICE9PSBudWxsKSB7XG4gICAgICAgIGlmIChmaWVsZC5sb2NhbGl6ZWQpIHtcbiAgICAgICAgICBPYmplY3QuZW50cmllcyhkYXRhW2ZpZWxkLm5hbWVdKS5mb3JFYWNoKChbbG9jYWxlS2V5LCBsb2NhbGVEYXRhXSkgPT4ge1xuICAgICAgICAgICAgdHJhdmVyc2VGaWVsZHMoe1xuICAgICAgICAgICAgICBhZGFwdGVyLFxuICAgICAgICAgICAgICBhcnJheXMsXG4gICAgICAgICAgICAgIGJhc2VUYWJsZU5hbWUsXG4gICAgICAgICAgICAgIGJsb2NrcyxcbiAgICAgICAgICAgICAgYmxvY2tzVG9EZWxldGUsXG4gICAgICAgICAgICAgIGNvbHVtblByZWZpeDogYCR7Y29sdW1uTmFtZX1fYCxcbiAgICAgICAgICAgICAgZGF0YTogbG9jYWxlRGF0YSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgICAgICAgICAgICAgZXhpc3RpbmdMb2NhbGVzLFxuICAgICAgICAgICAgICBmaWVsZFByZWZpeDogYCR7ZmllbGROYW1lfV9gLFxuICAgICAgICAgICAgICBmaWVsZHM6IGZpZWxkLmZpZWxkcyxcbiAgICAgICAgICAgICAgZm9yY2VkTG9jYWxlOiBsb2NhbGVLZXksXG4gICAgICAgICAgICAgIGxvY2FsZXMsXG4gICAgICAgICAgICAgIHRleHRzLFxuICAgICAgICAgICAgICBudW1iZXJzLFxuICAgICAgICAgICAgICBwYXJlbnRUYWJsZU5hbWUsXG4gICAgICAgICAgICAgIHBhdGg6IGAke3BhdGggfHwgJyd9JHtmaWVsZC5uYW1lfS5gLFxuICAgICAgICAgICAgICByZWxhdGlvbnNoaXBzLFxuICAgICAgICAgICAgICByZWxhdGlvbnNoaXBzVG9EZWxldGUsXG4gICAgICAgICAgICAgIHJvdyxcbiAgICAgICAgICAgICAgc2VsZWN0cyxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfSlcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0cmF2ZXJzZUZpZWxkcyh7XG4gICAgICAgICAgICBhZGFwdGVyLFxuICAgICAgICAgICAgYXJyYXlzLFxuICAgICAgICAgICAgYmFzZVRhYmxlTmFtZSxcbiAgICAgICAgICAgIGJsb2NrcyxcbiAgICAgICAgICAgIGJsb2Nrc1RvRGVsZXRlLFxuICAgICAgICAgICAgY29sdW1uUHJlZml4OiBgJHtjb2x1bW5OYW1lfV9gLFxuICAgICAgICAgICAgZGF0YTogZGF0YVtmaWVsZC5uYW1lXSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgICAgICAgICAgIGV4aXN0aW5nTG9jYWxlcyxcbiAgICAgICAgICAgIGZpZWxkUHJlZml4OiBgJHtmaWVsZE5hbWV9X2AsXG4gICAgICAgICAgICBmaWVsZHM6IGZpZWxkLmZpZWxkcyxcbiAgICAgICAgICAgIGxvY2FsZXMsXG4gICAgICAgICAgICB0ZXh0cyxcbiAgICAgICAgICAgIG51bWJlcnMsXG4gICAgICAgICAgICBwYXJlbnRUYWJsZU5hbWUsXG4gICAgICAgICAgICBwYXRoOiBgJHtwYXRoIHx8ICcnfSR7ZmllbGQubmFtZX0uYCxcbiAgICAgICAgICAgIHJlbGF0aW9uc2hpcHMsXG4gICAgICAgICAgICByZWxhdGlvbnNoaXBzVG9EZWxldGUsXG4gICAgICAgICAgICByb3csXG4gICAgICAgICAgICBzZWxlY3RzLFxuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYgKGZpZWxkLnR5cGUgPT09ICd0YWJzJykge1xuICAgICAgZmllbGQudGFicy5mb3JFYWNoKCh0YWIpID0+IHtcbiAgICAgICAgaWYgKCduYW1lJyBpbiB0YWIpIHtcbiAgICAgICAgICBpZiAodHlwZW9mIGRhdGFbdGFiLm5hbWVdID09PSAnb2JqZWN0JyAmJiBkYXRhW3RhYi5uYW1lXSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgaWYgKHRhYi5sb2NhbGl6ZWQpIHtcbiAgICAgICAgICAgICAgT2JqZWN0LmVudHJpZXMoZGF0YVt0YWIubmFtZV0pLmZvckVhY2goKFtsb2NhbGVLZXksIGxvY2FsZURhdGFdKSA9PiB7XG4gICAgICAgICAgICAgICAgdHJhdmVyc2VGaWVsZHMoe1xuICAgICAgICAgICAgICAgICAgYWRhcHRlcixcbiAgICAgICAgICAgICAgICAgIGFycmF5cyxcbiAgICAgICAgICAgICAgICAgIGJhc2VUYWJsZU5hbWUsXG4gICAgICAgICAgICAgICAgICBibG9ja3MsXG4gICAgICAgICAgICAgICAgICBibG9ja3NUb0RlbGV0ZSxcbiAgICAgICAgICAgICAgICAgIGNvbHVtblByZWZpeDogYCR7Y29sdW1uUHJlZml4IHx8ICcnfSR7dG9TbmFrZUNhc2UodGFiLm5hbWUpfV9gLFxuICAgICAgICAgICAgICAgICAgZGF0YTogbG9jYWxlRGF0YSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgICAgICAgICAgICAgICAgIGV4aXN0aW5nTG9jYWxlcyxcbiAgICAgICAgICAgICAgICAgIGZpZWxkUHJlZml4OiBgJHtmaWVsZFByZWZpeCB8fCAnJ30ke3RhYi5uYW1lfV9gLFxuICAgICAgICAgICAgICAgICAgZmllbGRzOiB0YWIuZmllbGRzLFxuICAgICAgICAgICAgICAgICAgZm9yY2VkTG9jYWxlOiBsb2NhbGVLZXksXG4gICAgICAgICAgICAgICAgICBsb2NhbGVzLFxuICAgICAgICAgICAgICAgICAgdGV4dHMsXG4gICAgICAgICAgICAgICAgICBudW1iZXJzLFxuICAgICAgICAgICAgICAgICAgcGFyZW50VGFibGVOYW1lLFxuICAgICAgICAgICAgICAgICAgcGF0aDogYCR7cGF0aCB8fCAnJ30ke3RhYi5uYW1lfS5gLFxuICAgICAgICAgICAgICAgICAgcmVsYXRpb25zaGlwcyxcbiAgICAgICAgICAgICAgICAgIHJlbGF0aW9uc2hpcHNUb0RlbGV0ZSxcbiAgICAgICAgICAgICAgICAgIHJvdyxcbiAgICAgICAgICAgICAgICAgIHNlbGVjdHMsXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHRyYXZlcnNlRmllbGRzKHtcbiAgICAgICAgICAgICAgICBhZGFwdGVyLFxuICAgICAgICAgICAgICAgIGFycmF5cyxcbiAgICAgICAgICAgICAgICBiYXNlVGFibGVOYW1lLFxuICAgICAgICAgICAgICAgIGJsb2NrcyxcbiAgICAgICAgICAgICAgICBibG9ja3NUb0RlbGV0ZSxcbiAgICAgICAgICAgICAgICBjb2x1bW5QcmVmaXg6IGAke2NvbHVtblByZWZpeCB8fCAnJ30ke3RvU25ha2VDYXNlKHRhYi5uYW1lKX1fYCxcbiAgICAgICAgICAgICAgICBkYXRhOiBkYXRhW3RhYi5uYW1lXSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgICAgICAgICAgICAgICBleGlzdGluZ0xvY2FsZXMsXG4gICAgICAgICAgICAgICAgZmllbGRQcmVmaXg6IGAke2ZpZWxkUHJlZml4IHx8ICcnfSR7dGFiLm5hbWV9X2AsXG4gICAgICAgICAgICAgICAgZmllbGRzOiB0YWIuZmllbGRzLFxuICAgICAgICAgICAgICAgIGxvY2FsZXMsXG4gICAgICAgICAgICAgICAgdGV4dHMsXG4gICAgICAgICAgICAgICAgbnVtYmVycyxcbiAgICAgICAgICAgICAgICBwYXJlbnRUYWJsZU5hbWUsXG4gICAgICAgICAgICAgICAgcGF0aDogYCR7cGF0aCB8fCAnJ30ke3RhYi5uYW1lfS5gLFxuICAgICAgICAgICAgICAgIHJlbGF0aW9uc2hpcHMsXG4gICAgICAgICAgICAgICAgcmVsYXRpb25zaGlwc1RvRGVsZXRlLFxuICAgICAgICAgICAgICAgIHJvdyxcbiAgICAgICAgICAgICAgICBzZWxlY3RzLFxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0cmF2ZXJzZUZpZWxkcyh7XG4gICAgICAgICAgICBhZGFwdGVyLFxuICAgICAgICAgICAgYXJyYXlzLFxuICAgICAgICAgICAgYmFzZVRhYmxlTmFtZSxcbiAgICAgICAgICAgIGJsb2NrcyxcbiAgICAgICAgICAgIGJsb2Nrc1RvRGVsZXRlLFxuICAgICAgICAgICAgY29sdW1uUHJlZml4LFxuICAgICAgICAgICAgZGF0YSxcbiAgICAgICAgICAgIGV4aXN0aW5nTG9jYWxlcyxcbiAgICAgICAgICAgIGZpZWxkUHJlZml4LFxuICAgICAgICAgICAgZmllbGRzOiB0YWIuZmllbGRzLFxuICAgICAgICAgICAgbG9jYWxlcyxcbiAgICAgICAgICAgIHRleHRzLFxuICAgICAgICAgICAgbnVtYmVycyxcbiAgICAgICAgICAgIHBhcmVudFRhYmxlTmFtZSxcbiAgICAgICAgICAgIHBhdGgsXG4gICAgICAgICAgICByZWxhdGlvbnNoaXBzLFxuICAgICAgICAgICAgcmVsYXRpb25zaGlwc1RvRGVsZXRlLFxuICAgICAgICAgICAgcm93LFxuICAgICAgICAgICAgc2VsZWN0cyxcbiAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH1cblxuICAgIGlmIChmaWVsZC50eXBlID09PSAncm93JyB8fCBmaWVsZC50eXBlID09PSAnY29sbGFwc2libGUnKSB7XG4gICAgICB0cmF2ZXJzZUZpZWxkcyh7XG4gICAgICAgIGFkYXB0ZXIsXG4gICAgICAgIGFycmF5cyxcbiAgICAgICAgYmFzZVRhYmxlTmFtZSxcbiAgICAgICAgYmxvY2tzLFxuICAgICAgICBibG9ja3NUb0RlbGV0ZSxcbiAgICAgICAgY29sdW1uUHJlZml4LFxuICAgICAgICBkYXRhLFxuICAgICAgICBleGlzdGluZ0xvY2FsZXMsXG4gICAgICAgIGZpZWxkUHJlZml4LFxuICAgICAgICBmaWVsZHM6IGZpZWxkLmZpZWxkcyxcbiAgICAgICAgbG9jYWxlcyxcbiAgICAgICAgdGV4dHMsXG4gICAgICAgIG51bWJlcnMsXG4gICAgICAgIHBhcmVudFRhYmxlTmFtZSxcbiAgICAgICAgcGF0aCxcbiAgICAgICAgcmVsYXRpb25zaGlwcyxcbiAgICAgICAgcmVsYXRpb25zaGlwc1RvRGVsZXRlLFxuICAgICAgICByb3csXG4gICAgICAgIHNlbGVjdHMsXG4gICAgICB9KVxuICAgIH1cblxuICAgIGlmIChmaWVsZC50eXBlID09PSAncmVsYXRpb25zaGlwJyB8fCBmaWVsZC50eXBlID09PSAndXBsb2FkJykge1xuICAgICAgY29uc3QgcmVsYXRpb25zaGlwUGF0aCA9IGAke3BhdGggfHwgJyd9JHtmaWVsZC5uYW1lfWBcblxuICAgICAgaWYgKGZpZWxkLmxvY2FsaXplZCkge1xuICAgICAgICBpZiAodHlwZW9mIGZpZWxkRGF0YSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICBPYmplY3QuZW50cmllcyhmaWVsZERhdGEpLmZvckVhY2goKFtsb2NhbGVLZXksIGxvY2FsZURhdGFdKSA9PiB7XG4gICAgICAgICAgICBpZiAobG9jYWxlRGF0YSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICByZWxhdGlvbnNoaXBzVG9EZWxldGUucHVzaCh7XG4gICAgICAgICAgICAgICAgbG9jYWxlOiBsb2NhbGVLZXksXG4gICAgICAgICAgICAgICAgcGF0aDogcmVsYXRpb25zaGlwUGF0aCxcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRyYW5zZm9ybVJlbGF0aW9uc2hpcCh7XG4gICAgICAgICAgICAgIGJhc2VSb3c6IHtcbiAgICAgICAgICAgICAgICBsb2NhbGU6IGxvY2FsZUtleSxcbiAgICAgICAgICAgICAgICBwYXRoOiByZWxhdGlvbnNoaXBQYXRoLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBkYXRhOiBsb2NhbGVEYXRhLFxuICAgICAgICAgICAgICBmaWVsZCxcbiAgICAgICAgICAgICAgcmVsYXRpb25zaGlwcyxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGZpZWxkRGF0YSA9PT0gbnVsbCB8fCAoQXJyYXkuaXNBcnJheShmaWVsZERhdGEpICYmIGZpZWxkRGF0YS5sZW5ndGggPT09IDApKSB7XG4gICAgICAgICAgcmVsYXRpb25zaGlwc1RvRGVsZXRlLnB1c2goeyBwYXRoOiByZWxhdGlvbnNoaXBQYXRoIH0pXG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cblxuICAgICAgICB0cmFuc2Zvcm1SZWxhdGlvbnNoaXAoe1xuICAgICAgICAgIGJhc2VSb3c6IHtcbiAgICAgICAgICAgIHBhdGg6IHJlbGF0aW9uc2hpcFBhdGgsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBkYXRhOiBmaWVsZERhdGEsXG4gICAgICAgICAgZmllbGQsXG4gICAgICAgICAgcmVsYXRpb25zaGlwcyxcbiAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYgKGZpZWxkLnR5cGUgPT09ICd0ZXh0JyAmJiBmaWVsZC5oYXNNYW55KSB7XG4gICAgICBjb25zdCB0ZXh0UGF0aCA9IGAke3BhdGggfHwgJyd9JHtmaWVsZC5uYW1lfWBcblxuICAgICAgaWYgKGZpZWxkLmxvY2FsaXplZCkge1xuICAgICAgICBpZiAodHlwZW9mIGZpZWxkRGF0YSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICBPYmplY3QuZW50cmllcyhmaWVsZERhdGEpLmZvckVhY2goKFtsb2NhbGVLZXksIGxvY2FsZURhdGFdKSA9PiB7XG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShsb2NhbGVEYXRhKSkge1xuICAgICAgICAgICAgICB0cmFuc2Zvcm1UZXh0cyh7XG4gICAgICAgICAgICAgICAgYmFzZVJvdzoge1xuICAgICAgICAgICAgICAgICAgbG9jYWxlOiBsb2NhbGVLZXksXG4gICAgICAgICAgICAgICAgICBwYXRoOiB0ZXh0UGF0aCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGRhdGE6IGxvY2FsZURhdGEsXG4gICAgICAgICAgICAgICAgdGV4dHMsXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGZpZWxkRGF0YSkpIHtcbiAgICAgICAgdHJhbnNmb3JtVGV4dHMoe1xuICAgICAgICAgIGJhc2VSb3c6IHtcbiAgICAgICAgICAgIHBhdGg6IHRleHRQYXRoLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgZGF0YTogZmllbGREYXRhLFxuICAgICAgICAgIHRleHRzLFxuICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAoZmllbGQudHlwZSA9PT0gJ251bWJlcicgJiYgZmllbGQuaGFzTWFueSkge1xuICAgICAgY29uc3QgbnVtYmVyUGF0aCA9IGAke3BhdGggfHwgJyd9JHtmaWVsZC5uYW1lfWBcblxuICAgICAgaWYgKGZpZWxkLmxvY2FsaXplZCkge1xuICAgICAgICBpZiAodHlwZW9mIGZpZWxkRGF0YSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICBPYmplY3QuZW50cmllcyhmaWVsZERhdGEpLmZvckVhY2goKFtsb2NhbGVLZXksIGxvY2FsZURhdGFdKSA9PiB7XG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShsb2NhbGVEYXRhKSkge1xuICAgICAgICAgICAgICB0cmFuc2Zvcm1OdW1iZXJzKHtcbiAgICAgICAgICAgICAgICBiYXNlUm93OiB7XG4gICAgICAgICAgICAgICAgICBsb2NhbGU6IGxvY2FsZUtleSxcbiAgICAgICAgICAgICAgICAgIHBhdGg6IG51bWJlclBhdGgsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBkYXRhOiBsb2NhbGVEYXRhLFxuICAgICAgICAgICAgICAgIG51bWJlcnMsXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGZpZWxkRGF0YSkpIHtcbiAgICAgICAgdHJhbnNmb3JtTnVtYmVycyh7XG4gICAgICAgICAgYmFzZVJvdzoge1xuICAgICAgICAgICAgcGF0aDogbnVtYmVyUGF0aCxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGRhdGE6IGZpZWxkRGF0YSxcbiAgICAgICAgICBudW1iZXJzLFxuICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAoZmllbGQudHlwZSA9PT0gJ3NlbGVjdCcgJiYgZmllbGQuaGFzTWFueSkge1xuICAgICAgY29uc3Qgc2VsZWN0VGFibGVOYW1lID0gYCR7cGFyZW50VGFibGVOYW1lfV8ke2NvbHVtbk5hbWV9YFxuICAgICAgaWYgKCFzZWxlY3RzW3NlbGVjdFRhYmxlTmFtZV0pIHNlbGVjdHNbc2VsZWN0VGFibGVOYW1lXSA9IFtdXG5cbiAgICAgIGlmIChmaWVsZC5sb2NhbGl6ZWQpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBkYXRhW2ZpZWxkLm5hbWVdID09PSAnb2JqZWN0JyAmJiBkYXRhW2ZpZWxkLm5hbWVdICE9PSBudWxsKSB7XG4gICAgICAgICAgT2JqZWN0LmVudHJpZXMoZGF0YVtmaWVsZC5uYW1lXSkuZm9yRWFjaCgoW2xvY2FsZUtleSwgbG9jYWxlRGF0YV0pID0+IHtcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGxvY2FsZURhdGEpKSB7XG4gICAgICAgICAgICAgIGNvbnN0IG5ld1Jvd3MgPSB0cmFuc2Zvcm1TZWxlY3RzKHtcbiAgICAgICAgICAgICAgICBpZDogZGF0YS5fdXVpZCB8fCBkYXRhLmlkLFxuICAgICAgICAgICAgICAgIGRhdGE6IGxvY2FsZURhdGEsXG4gICAgICAgICAgICAgICAgbG9jYWxlOiBsb2NhbGVLZXksXG4gICAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgICAgc2VsZWN0c1tzZWxlY3RUYWJsZU5hbWVdID0gc2VsZWN0c1tzZWxlY3RUYWJsZU5hbWVdLmNvbmNhdChuZXdSb3dzKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShkYXRhW2ZpZWxkLm5hbWVdKSkge1xuICAgICAgICBjb25zdCBuZXdSb3dzID0gdHJhbnNmb3JtU2VsZWN0cyh7XG4gICAgICAgICAgaWQ6IGRhdGEuX3V1aWQgfHwgZGF0YS5pZCxcbiAgICAgICAgICBkYXRhOiBkYXRhW2ZpZWxkLm5hbWVdLFxuICAgICAgICB9KVxuXG4gICAgICAgIHNlbGVjdHNbc2VsZWN0VGFibGVOYW1lXSA9IHNlbGVjdHNbc2VsZWN0VGFibGVOYW1lXS5jb25jYXQobmV3Um93cylcbiAgICAgIH1cblxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYgKGZpZWxkQWZmZWN0c0RhdGEoZmllbGQpKSB7XG4gICAgICBjb25zdCB2YWx1ZXNUb1RyYW5zZm9ybTogeyBsb2NhbGVLZXk/OiBzdHJpbmc7IHJlZjogdW5rbm93bjsgdmFsdWU6IHVua25vd24gfVtdID0gW11cblxuICAgICAgaWYgKGZpZWxkLmxvY2FsaXplZCkge1xuICAgICAgICBpZiAodHlwZW9mIGZpZWxkRGF0YSA9PT0gJ29iamVjdCcgJiYgZmllbGREYXRhICE9PSBudWxsKSB7XG4gICAgICAgICAgT2JqZWN0LmVudHJpZXMoZmllbGREYXRhKS5mb3JFYWNoKChbbG9jYWxlS2V5LCBsb2NhbGVEYXRhXSkgPT4ge1xuICAgICAgICAgICAgaWYgKCFsb2NhbGVzW2xvY2FsZUtleV0pIGxvY2FsZXNbbG9jYWxlS2V5XSA9IHt9XG5cbiAgICAgICAgICAgIHZhbHVlc1RvVHJhbnNmb3JtLnB1c2goe1xuICAgICAgICAgICAgICBsb2NhbGVLZXksXG4gICAgICAgICAgICAgIHJlZjogbG9jYWxlcyxcbiAgICAgICAgICAgICAgdmFsdWU6IGxvY2FsZURhdGEsXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxldCByZWYgPSByb3dcblxuICAgICAgICBpZiAoZm9yY2VkTG9jYWxlKSB7XG4gICAgICAgICAgaWYgKCFsb2NhbGVzW2ZvcmNlZExvY2FsZV0pIGxvY2FsZXNbZm9yY2VkTG9jYWxlXSA9IHt9XG4gICAgICAgICAgcmVmID0gbG9jYWxlc1tmb3JjZWRMb2NhbGVdXG4gICAgICAgIH1cblxuICAgICAgICB2YWx1ZXNUb1RyYW5zZm9ybS5wdXNoKHsgcmVmLCB2YWx1ZTogZmllbGREYXRhIH0pXG4gICAgICB9XG5cbiAgICAgIHZhbHVlc1RvVHJhbnNmb3JtLmZvckVhY2goKHsgbG9jYWxlS2V5LCByZWYsIHZhbHVlIH0pID0+IHtcbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICBsZXQgZm9ybWF0dGVkVmFsdWUgPSB2YWx1ZVxuXG4gICAgICAgICAgaWYgKGZpZWxkLnR5cGUgPT09ICdkYXRlJyAmJiBmaWVsZC5uYW1lID09PSAndXBkYXRlZEF0Jykge1xuICAgICAgICAgICAgZm9ybWF0dGVkVmFsdWUgPSBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKClcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAobG9jYWxlS2V5KSB7XG4gICAgICAgICAgICByZWZbbG9jYWxlS2V5XVtmaWVsZE5hbWVdID0gZm9ybWF0dGVkVmFsdWVcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVmW2ZpZWxkTmFtZV0gPSBmb3JtYXR0ZWRWYWx1ZVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9XG4gIH0pXG59XG4iXSwibmFtZXMiOlsiZmllbGRBZmZlY3RzRGF0YSIsInRvU25ha2VDYXNlIiwiaXNBcnJheU9mUm93cyIsInRyYW5zZm9ybUFycmF5IiwidHJhbnNmb3JtQmxvY2tzIiwidHJhbnNmb3JtTnVtYmVycyIsInRyYW5zZm9ybVJlbGF0aW9uc2hpcCIsInRyYW5zZm9ybVNlbGVjdHMiLCJ0cmFuc2Zvcm1UZXh0cyIsInRyYXZlcnNlRmllbGRzIiwiYWRhcHRlciIsImFycmF5cyIsImJhc2VUYWJsZU5hbWUiLCJibG9ja3MiLCJibG9ja3NUb0RlbGV0ZSIsImNvbHVtblByZWZpeCIsImRhdGEiLCJleGlzdGluZ0xvY2FsZXMiLCJmaWVsZFByZWZpeCIsImZpZWxkcyIsImZvcmNlZExvY2FsZSIsImxvY2FsZXMiLCJ0ZXh0cyIsIm51bWJlcnMiLCJwYXJlbnRUYWJsZU5hbWUiLCJwYXRoIiwicmVsYXRpb25zaGlwcyIsInJlbGF0aW9uc2hpcHNUb0RlbGV0ZSIsInJvdyIsInNlbGVjdHMiLCJmb3JFYWNoIiwiZmllbGQiLCJjb2x1bW5OYW1lIiwiZmllbGROYW1lIiwiZmllbGREYXRhIiwibmFtZSIsInR5cGUiLCJhcnJheVRhYmxlTmFtZSIsImxvY2FsaXplZCIsIk9iamVjdCIsImVudHJpZXMiLCJsb2NhbGVLZXkiLCJsb2NhbGVEYXRhIiwiQXJyYXkiLCJpc0FycmF5IiwibmV3Um93cyIsImxvY2FsZSIsImNvbmNhdCIsInNsdWciLCJhZGQiLCJ0YWJzIiwidGFiIiwicmVsYXRpb25zaGlwUGF0aCIsInB1c2giLCJiYXNlUm93IiwibGVuZ3RoIiwiaGFzTWFueSIsInRleHRQYXRoIiwibnVtYmVyUGF0aCIsInNlbGVjdFRhYmxlTmFtZSIsImlkIiwiX3V1aWQiLCJ2YWx1ZXNUb1RyYW5zZm9ybSIsInJlZiIsInZhbHVlIiwiZm9ybWF0dGVkVmFsdWUiLCJEYXRlIiwidG9JU09TdHJpbmciXSwibWFwcGluZ3MiOiJBQUFBLG9DQUFvQyxHQUdwQyxTQUFTQSxnQkFBZ0IsUUFBUSxnQkFBZTtBQUNoRCxPQUFPQyxpQkFBaUIsZ0JBQWU7QUFLdkMsU0FBU0MsYUFBYSxRQUFRLG1DQUFrQztBQUNoRSxTQUFTQyxjQUFjLFFBQVEsYUFBWTtBQUMzQyxTQUFTQyxlQUFlLFFBQVEsY0FBYTtBQUM3QyxTQUFTQyxnQkFBZ0IsUUFBUSxlQUFjO0FBQy9DLFNBQVNDLHFCQUFxQixRQUFRLHFCQUFvQjtBQUMxRCxTQUFTQyxn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
|
428
|
+
//# sourceMappingURL=traverseFields.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../../../src/transform/write/traverseFields.ts"],"sourcesContent":["/* eslint-disable no-param-reassign */\nimport type { Field } from 'payload/types'\n\nimport { fieldAffectsData } from 'payload/types'\nimport toSnakeCase from 'to-snake-case'\n\nimport type { PostgresAdapter } from '../../types.js'\nimport type { ArrayRowToInsert, BlockRowToInsert, RelationshipToDelete } from './types.js'\n\nimport { isArrayOfRows } from '../../utilities/isArrayOfRows.js'\nimport { transformArray } from './array.js'\nimport { transformBlocks } from './blocks.js'\nimport { transformNumbers } from './numbers.js'\nimport { transformRelationship } from './relationships.js'\nimport { transformSelects } from './selects.js'\nimport { transformTexts } from './texts.js'\n\ntype Args = {\n adapter: PostgresAdapter\n arrays: {\n [tableName: string]: ArrayRowToInsert[]\n }\n /**\n * This is the name of the base table\n */\n baseTableName: string\n blocks: {\n [blockType: string]: BlockRowToInsert[]\n }\n blocksToDelete: Set<string>\n /**\n * A snake-case field prefix, representing prior fields\n * Ex: my_group_my_named_tab_\n */\n columnPrefix: string\n data: Record<string, unknown>\n existingLocales?: Record<string, unknown>[]\n /**\n * A prefix that will retain camel-case formatting, representing prior fields\n * Ex: myGroup_myNamedTab_\n */\n fieldPrefix: string\n fields: Field[]\n forcedLocale?: string\n locales: {\n [locale: string]: Record<string, unknown>\n }\n texts: Record<string, unknown>[]\n numbers: Record<string, unknown>[]\n /**\n * This is the name of the parent table\n */\n parentTableName: string\n path: string\n relationships: Record<string, unknown>[]\n relationshipsToDelete: RelationshipToDelete[]\n row: Record<string, unknown>\n selects: {\n [tableName: string]: Record<string, unknown>[]\n }\n}\n\nexport const traverseFields = ({\n adapter,\n arrays,\n baseTableName,\n blocks,\n blocksToDelete,\n columnPrefix,\n data,\n existingLocales,\n fieldPrefix,\n fields,\n forcedLocale,\n locales,\n texts,\n numbers,\n parentTableName,\n path,\n relationships,\n relationshipsToDelete,\n row,\n selects,\n}: Args) => {\n fields.forEach((field) => {\n let columnName = ''\n let fieldName = ''\n let fieldData: unknown\n\n if (fieldAffectsData(field)) {\n columnName = `${columnPrefix || ''}${toSnakeCase(field.name)}`\n fieldName = `${fieldPrefix || ''}${field.name}`\n fieldData = data[field.name]\n }\n\n if (field.type === 'array') {\n const arrayTableName = `${parentTableName}_${columnName}`\n\n if (!arrays[arrayTableName]) arrays[arrayTableName] = []\n\n if (field.localized) {\n if (typeof data[field.name] === 'object' && data[field.name] !== null) {\n Object.entries(data[field.name]).forEach(([localeKey, localeData]) => {\n if (Array.isArray(localeData)) {\n const newRows = transformArray({\n adapter,\n arrayTableName,\n baseTableName,\n blocks,\n blocksToDelete,\n data: localeData,\n field,\n locale: localeKey,\n texts,\n numbers,\n path,\n relationships,\n relationshipsToDelete,\n selects,\n })\n\n arrays[arrayTableName] = arrays[arrayTableName].concat(newRows)\n }\n })\n }\n } else {\n const newRows = transformArray({\n adapter,\n arrayTableName,\n baseTableName,\n blocks,\n blocksToDelete,\n data: data[field.name],\n field,\n texts,\n numbers,\n path,\n relationships,\n relationshipsToDelete,\n selects,\n })\n\n arrays[arrayTableName] = arrays[arrayTableName].concat(newRows)\n }\n\n return\n }\n\n if (field.type === 'blocks') {\n field.blocks.forEach(({ slug }) => {\n blocksToDelete.add(toSnakeCase(slug))\n })\n\n if (field.localized) {\n if (typeof data[field.name] === 'object' && data[field.name] !== null) {\n Object.entries(data[field.name]).forEach(([localeKey, localeData]) => {\n if (Array.isArray(localeData)) {\n transformBlocks({\n adapter,\n baseTableName,\n blocks,\n blocksToDelete,\n data: localeData,\n field,\n locale: localeKey,\n texts,\n numbers,\n path,\n relationships,\n relationshipsToDelete,\n selects,\n })\n }\n })\n }\n } else if (isArrayOfRows(fieldData)) {\n transformBlocks({\n adapter,\n baseTableName,\n blocks,\n blocksToDelete,\n data: fieldData,\n field,\n texts,\n numbers,\n path,\n relationships,\n relationshipsToDelete,\n selects,\n })\n }\n\n return\n }\n\n if (field.type === 'group') {\n if (typeof data[field.name] === 'object' && data[field.name] !== null) {\n if (field.localized) {\n Object.entries(data[field.name]).forEach(([localeKey, localeData]) => {\n traverseFields({\n adapter,\n arrays,\n baseTableName,\n blocks,\n blocksToDelete,\n columnPrefix: `${columnName}_`,\n data: localeData as Record<string, unknown>,\n existingLocales,\n fieldPrefix: `${fieldName}_`,\n fields: field.fields,\n forcedLocale: localeKey,\n locales,\n texts,\n numbers,\n parentTableName,\n path: `${path || ''}${field.name}.`,\n relationships,\n relationshipsToDelete,\n row,\n selects,\n })\n })\n } else {\n traverseFields({\n adapter,\n arrays,\n baseTableName,\n blocks,\n blocksToDelete,\n columnPrefix: `${columnName}_`,\n data: data[field.name] as Record<string, unknown>,\n existingLocales,\n fieldPrefix: `${fieldName}_`,\n fields: field.fields,\n locales,\n texts,\n numbers,\n parentTableName,\n path: `${path || ''}${field.name}.`,\n relationships,\n relationshipsToDelete,\n row,\n selects,\n })\n }\n }\n\n return\n }\n\n if (field.type === 'tabs') {\n field.tabs.forEach((tab) => {\n if ('name' in tab) {\n if (typeof data[tab.name] === 'object' && data[tab.name] !== null) {\n if (tab.localized) {\n Object.entries(data[tab.name]).forEach(([localeKey, localeData]) => {\n traverseFields({\n adapter,\n arrays,\n baseTableName,\n blocks,\n blocksToDelete,\n columnPrefix: `${columnPrefix || ''}${toSnakeCase(tab.name)}_`,\n data: localeData as Record<string, unknown>,\n existingLocales,\n fieldPrefix: `${fieldPrefix || ''}${tab.name}_`,\n fields: tab.fields,\n forcedLocale: localeKey,\n locales,\n texts,\n numbers,\n parentTableName,\n path: `${path || ''}${tab.name}.`,\n relationships,\n relationshipsToDelete,\n row,\n selects,\n })\n })\n } else {\n traverseFields({\n adapter,\n arrays,\n baseTableName,\n blocks,\n blocksToDelete,\n columnPrefix: `${columnPrefix || ''}${toSnakeCase(tab.name)}_`,\n data: data[tab.name] as Record<string, unknown>,\n existingLocales,\n fieldPrefix: `${fieldPrefix || ''}${tab.name}_`,\n fields: tab.fields,\n locales,\n texts,\n numbers,\n parentTableName,\n path: `${path || ''}${tab.name}.`,\n relationships,\n relationshipsToDelete,\n row,\n selects,\n })\n }\n }\n } else {\n traverseFields({\n adapter,\n arrays,\n baseTableName,\n blocks,\n blocksToDelete,\n columnPrefix,\n data,\n existingLocales,\n fieldPrefix,\n fields: tab.fields,\n locales,\n texts,\n numbers,\n parentTableName,\n path,\n relationships,\n relationshipsToDelete,\n row,\n selects,\n })\n }\n })\n }\n\n if (field.type === 'row' || field.type === 'collapsible') {\n traverseFields({\n adapter,\n arrays,\n baseTableName,\n blocks,\n blocksToDelete,\n columnPrefix,\n data,\n existingLocales,\n fieldPrefix,\n fields: field.fields,\n locales,\n texts,\n numbers,\n parentTableName,\n path,\n relationships,\n relationshipsToDelete,\n row,\n selects,\n })\n }\n\n if (field.type === 'relationship' || field.type === 'upload') {\n const relationshipPath = `${path || ''}${field.name}`\n\n if (field.localized) {\n if (typeof fieldData === 'object') {\n Object.entries(fieldData).forEach(([localeKey, localeData]) => {\n if (localeData === null) {\n relationshipsToDelete.push({\n locale: localeKey,\n path: relationshipPath,\n })\n return\n }\n\n transformRelationship({\n baseRow: {\n locale: localeKey,\n path: relationshipPath,\n },\n data: localeData,\n field,\n relationships,\n })\n })\n }\n } else {\n if (fieldData === null || (Array.isArray(fieldData) && fieldData.length === 0)) {\n relationshipsToDelete.push({ path: relationshipPath })\n return\n }\n\n transformRelationship({\n baseRow: {\n path: relationshipPath,\n },\n data: fieldData,\n field,\n relationships,\n })\n }\n\n return\n }\n\n if (field.type === 'text' && field.hasMany) {\n const textPath = `${path || ''}${field.name}`\n\n if (field.localized) {\n if (typeof fieldData === 'object') {\n Object.entries(fieldData).forEach(([localeKey, localeData]) => {\n if (Array.isArray(localeData)) {\n transformTexts({\n baseRow: {\n locale: localeKey,\n path: textPath,\n },\n data: localeData,\n texts,\n })\n }\n })\n }\n } else if (Array.isArray(fieldData)) {\n transformTexts({\n baseRow: {\n path: textPath,\n },\n data: fieldData,\n texts,\n })\n }\n\n return\n }\n\n if (field.type === 'number' && field.hasMany) {\n const numberPath = `${path || ''}${field.name}`\n\n if (field.localized) {\n if (typeof fieldData === 'object') {\n Object.entries(fieldData).forEach(([localeKey, localeData]) => {\n if (Array.isArray(localeData)) {\n transformNumbers({\n baseRow: {\n locale: localeKey,\n path: numberPath,\n },\n data: localeData,\n numbers,\n })\n }\n })\n }\n } else if (Array.isArray(fieldData)) {\n transformNumbers({\n baseRow: {\n path: numberPath,\n },\n data: fieldData,\n numbers,\n })\n }\n\n return\n }\n\n if (field.type === 'select' && field.hasMany) {\n const selectTableName = `${parentTableName}_${columnName}`\n if (!selects[selectTableName]) selects[selectTableName] = []\n\n if (field.localized) {\n if (typeof data[field.name] === 'object' && data[field.name] !== null) {\n Object.entries(data[field.name]).forEach(([localeKey, localeData]) => {\n if (Array.isArray(localeData)) {\n const newRows = transformSelects({\n id: data._uuid || data.id,\n data: localeData,\n locale: localeKey,\n })\n\n selects[selectTableName] = selects[selectTableName].concat(newRows)\n }\n })\n }\n } else if (Array.isArray(data[field.name])) {\n const newRows = transformSelects({\n id: data._uuid || data.id,\n data: data[field.name],\n })\n\n selects[selectTableName] = selects[selectTableName].concat(newRows)\n }\n\n return\n }\n\n if (fieldAffectsData(field)) {\n const valuesToTransform: { localeKey?: string; ref: unknown; value: unknown }[] = []\n\n if (field.localized) {\n if (typeof fieldData === 'object' && fieldData !== null) {\n Object.entries(fieldData).forEach(([localeKey, localeData]) => {\n if (!locales[localeKey]) locales[localeKey] = {}\n\n valuesToTransform.push({\n localeKey,\n ref: locales,\n value: localeData,\n })\n })\n }\n } else {\n let ref = row\n\n if (forcedLocale) {\n if (!locales[forcedLocale]) locales[forcedLocale] = {}\n ref = locales[forcedLocale]\n }\n\n valuesToTransform.push({ ref, value: fieldData })\n }\n\n valuesToTransform.forEach(({ localeKey, ref, value }) => {\n if (typeof value !== 'undefined') {\n let formattedValue = value\n\n if (field.type === 'date' && field.name === 'updatedAt') {\n formattedValue = new Date().toISOString()\n }\n\n if (localeKey) {\n ref[localeKey][fieldName] = formattedValue\n } else {\n ref[fieldName] = formattedValue\n }\n }\n })\n }\n })\n}\n"],"names":["fieldAffectsData","toSnakeCase","isArrayOfRows","transformArray","transformBlocks","transformNumbers","transformRelationship","transformSelects","transformTexts","traverseFields","adapter","arrays","baseTableName","blocks","blocksToDelete","columnPrefix","data","existingLocales","fieldPrefix","fields","forcedLocale","locales","texts","numbers","parentTableName","path","relationships","relationshipsToDelete","row","selects","forEach","field","columnName","fieldName","fieldData","name","type","arrayTableName","localized","Object","entries","localeKey","localeData","Array","isArray","newRows","locale","concat","slug","add","tabs","tab","relationshipPath","push","baseRow","length","hasMany","textPath","numberPath","selectTableName","id","_uuid","valuesToTransform","ref","value","formattedValue","Date","toISOString"],"mappings":"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"}
|
@@ -1,3 +1,3 @@
|
|
1
1
|
export { };
|
2
2
|
|
3
|
-
//# sourceMappingURL=
|
3
|
+
//# sourceMappingURL=types.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../../../src/transform/write/types.ts"],"sourcesContent":["export type ArrayRowToInsert = {\n arrays: {\n [tableName: string]: ArrayRowToInsert[]\n }\n locales: {\n [locale: string]: Record<string, unknown>\n }\n row: Record<string, unknown>\n}\n\nexport type BlockRowToInsert = {\n arrays: {\n [tableName: string]: ArrayRowToInsert[]\n }\n locales: {\n [locale: string]: Record<string, unknown>\n }\n row: Record<string, unknown>\n}\n\nexport type RelationshipToDelete = {\n locale?: string\n path: string\n}\n\nexport type RowToInsert = {\n arrays: {\n [tableName: string]: ArrayRowToInsert[]\n }\n blocks: {\n [blockType: string]: BlockRowToInsert[]\n }\n blocksToDelete: Set<string>\n locales: {\n [locale: string]: Record<string, unknown>\n }\n texts: Record<string, unknown>[]\n numbers: Record<string, unknown>[]\n relationships: Record<string, unknown>[]\n relationshipsToDelete: RelationshipToDelete[]\n row: Record<string, unknown>\n selects: {\n [tableName: string]: Record<string, unknown>[]\n }\n}\n"],"names":[],"mappings":"AAyBA,WAmBC"}
|
package/dist/types.js
CHANGED
@@ -1,3 +1,3 @@
|
|
1
1
|
export { };
|
2
2
|
|
3
|
-
//# sourceMappingURL=
|
3
|
+
//# sourceMappingURL=types.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../src/types.ts"],"sourcesContent":["import type {\n ColumnBaseConfig,\n ColumnDataType,\n DrizzleConfig,\n ExtractTablesWithRelations,\n Relation,\n Relations,\n} from 'drizzle-orm'\nimport type { NodePgDatabase, NodePgQueryResultHKT } from 'drizzle-orm/node-postgres'\nimport type {\n PgColumn,\n PgEnum,\n PgSchema,\n PgTableWithColumns,\n PgTransaction,\n} from 'drizzle-orm/pg-core'\nimport type { PgTableFn } from 'drizzle-orm/pg-core/table'\nimport type { Payload } from 'payload'\nimport type { BaseDatabaseAdapter } from 'payload/database'\nimport type { PayloadRequest } from 'payload/types'\nimport type { Pool, PoolConfig } from 'pg'\n\nexport type DrizzleDB = NodePgDatabase<Record<string, unknown>>\n\nexport type Args = {\n idType?: 'serial' | 'uuid'\n logger?: DrizzleConfig['logger']\n migrationDir?: string\n pool: PoolConfig\n push?: boolean\n schemaName?: string\n}\n\nexport type GenericColumn = PgColumn<\n ColumnBaseConfig<ColumnDataType, string>,\n Record<string, unknown>\n>\n\nexport type GenericColumns = {\n [x: string]: GenericColumn\n}\n\nexport type GenericTable = PgTableWithColumns<{\n columns: GenericColumns\n dialect: string\n name: string\n schema: undefined\n}>\n\nexport type GenericEnum = PgEnum<[string, ...string[]]>\n\nexport type GenericRelation = Relations<string, Record<string, Relation<string>>>\n\nexport type DrizzleTransaction = PgTransaction<\n NodePgQueryResultHKT,\n Record<string, unknown>,\n ExtractTablesWithRelations<Record<string, unknown>>\n>\n\nexport type PostgresAdapter = BaseDatabaseAdapter & {\n drizzle: DrizzleDB\n enums: Record<string, GenericEnum>\n /**\n * An object keyed on each table, with a key value pair where the constraint name is the key, followed by the dot-notation field name\n * Used for returning properly formed errors from unique fields\n */\n fieldConstraints: Record<string, Record<string, string>>\n idType: Args['idType']\n logger: DrizzleConfig['logger']\n pgSchema?: { table: PgTableFn } | PgSchema\n pool: Pool\n poolOptions: Args['pool']\n push: boolean\n relations: Record<string, GenericRelation>\n schema: Record<string, GenericEnum | GenericRelation | GenericTable>\n schemaName?: Args['schemaName']\n sessions: {\n [id: string]: {\n db: DrizzleTransaction\n reject: () => Promise<void>\n resolve: () => Promise<void>\n }\n }\n tables: Record<string, GenericTable | PgTableWithColumns<any>>\n}\n\nexport type IDType = 'integer' | 'numeric' | 'uuid' | 'varchar'\n\nexport type PostgresAdapterResult = (args: { payload: Payload }) => PostgresAdapter\n\nexport type MigrateUpArgs = { payload: Payload; req?: Partial<PayloadRequest> }\nexport type MigrateDownArgs = { payload: Payload; req?: Partial<PayloadRequest> }\n\ndeclare module 'payload' {\n export interface DatabaseAdapter\n extends Omit<Args, 'migrationDir' | 'pool'>,\n BaseDatabaseAdapter {\n drizzle: DrizzleDB\n enums: Record<string, GenericEnum>\n fieldConstraints: Record<string, Record<string, string>>\n pool: Pool\n push: boolean\n relations: Record<string, GenericRelation>\n schema: Record<string, GenericEnum | GenericRelation | GenericTable>\n sessions: {\n [id: string]: {\n db: DrizzleTransaction\n reject: () => Promise<void>\n resolve: () => Promise<void>\n }\n }\n tables: Record<string, GenericTable>\n }\n}\n"],"names":[],"mappings":"AA2FA,WAAiF"}
|
package/dist/update.js
CHANGED
@@ -77,4 +77,4 @@ export const updateOne = async function updateOne({ id, collection: collectionSl
|
|
77
77
|
return result;
|
78
78
|
};
|
79
79
|
|
80
|
-
//# sourceMappingURL=
|
80
|
+
//# sourceMappingURL=update.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../src/update.ts"],"sourcesContent":["import type { UpdateOne } from 'payload/database'\n\nimport toSnakeCase from 'to-snake-case'\n\nimport type { ChainedMethods } from './find/chainMethods.js'\nimport type { PostgresAdapter } from './types.js'\nimport { chainMethods } from './find/chainMethods.js'\nimport buildQuery from './queries/buildQuery.js'\nimport { upsertRow } from './upsertRow/index.js'\n\nexport const updateOne: UpdateOne = async function updateOne(\n this: PostgresAdapter,\n { id, collection: collectionSlug, data, draft, locale, req, where: whereArg },\n) {\n const db = this.sessions[req.transactionID]?.db || this.drizzle\n const collection = this.payload.collections[collectionSlug].config\n const tableName = toSnakeCase(collectionSlug)\n const whereToUse = whereArg || { id: { equals: id } }\n\n const { joinAliases, joins, selectFields, where } = await buildQuery({\n adapter: this,\n fields: collection.fields,\n locale,\n tableName,\n where: whereToUse,\n })\n\n let idToUpdate = id\n\n // only fetch IDs when a sort or where query is used that needs to be done on join tables, otherwise these can be done directly on the table in findMany\n if (Object.keys(joins).length > 0 || joinAliases.length > 0) {\n const selectDistinctMethods: ChainedMethods = []\n\n if (where) {\n selectDistinctMethods.push({ args: [where], method: 'where' })\n }\n\n joinAliases.forEach(({ condition, table }) => {\n selectDistinctMethods.push({\n args: [table, condition],\n method: 'leftJoin',\n })\n })\n\n Object.entries(joins).forEach(([joinTable, condition]) => {\n if (joinTable) {\n selectDistinctMethods.push({\n args: [this.tables[joinTable], condition],\n method: 'leftJoin',\n })\n }\n })\n\n selectDistinctMethods.push({ args: [1], method: 'limit' })\n\n const selectDistinctResult = await chainMethods({\n methods: selectDistinctMethods,\n query: db.selectDistinct(selectFields).from(this.tables[tableName]),\n })\n\n if (selectDistinctResult?.[0]?.id) {\n idToUpdate = selectDistinctResult?.[0]?.id\n }\n }\n\n const result = await upsertRow({\n id: idToUpdate,\n adapter: this,\n data,\n db,\n fields: collection.fields,\n operation: 'update',\n tableName: toSnakeCase(collectionSlug),\n req,\n })\n\n return result\n}\n"],"names":["toSnakeCase","chainMethods","buildQuery","upsertRow","updateOne","id","collection","collectionSlug","data","draft","locale","req","where","whereArg","db","sessions","transactionID","drizzle","payload","collections","config","tableName","whereToUse","equals","joinAliases","joins","selectFields","adapter","fields","idToUpdate","Object","keys","length","selectDistinctMethods","push","args","method","forEach","condition","table","entries","joinTable","tables","selectDistinctResult","methods","query","selectDistinct","from","result","operation"],"mappings":"AAEA,OAAOA,iBAAiB,gBAAe;AAIvC,SAASC,YAAY,QAAQ,yBAAwB;AACrD,OAAOC,gBAAgB,0BAAyB;AAChD,SAASC,SAAS,QAAQ,uBAAsB;AAEhD,OAAO,MAAMC,YAAuB,eAAeA,UAEjD,EAAEC,EAAE,EAAEC,YAAYC,cAAc,EAAEC,IAAI,EAAEC,KAAK,EAAEC,MAAM,EAAEC,GAAG,EAAEC,OAAOC,QAAQ,EAAE;IAE7E,MAAMC,KAAK,IAAI,CAACC,QAAQ,CAACJ,IAAIK,aAAa,CAAC,EAAEF,MAAM,IAAI,CAACG,OAAO;IAC/D,MAAMX,aAAa,IAAI,CAACY,OAAO,CAACC,WAAW,CAACZ,eAAe,CAACa,MAAM;IAClE,MAAMC,YAAYrB,YAAYO;IAC9B,MAAMe,aAAaT,YAAY;QAAER,IAAI;YAAEkB,QAAQlB;QAAG;IAAE;IAEpD,MAAM,EAAEmB,WAAW,EAAEC,KAAK,EAAEC,YAAY,EAAEd,KAAK,EAAE,GAAG,MAAMV,WAAW;QACnEyB,SAAS,IAAI;QACbC,QAAQtB,WAAWsB,MAAM;QACzBlB;QACAW;QACAT,OAAOU;IACT;IAEA,IAAIO,aAAaxB;IAEjB,wJAAwJ;IACxJ,IAAIyB,OAAOC,IAAI,CAACN,OAAOO,MAAM,GAAG,KAAKR,YAAYQ,MAAM,GAAG,GAAG;QAC3D,MAAMC,wBAAwC,EAAE;QAEhD,IAAIrB,OAAO;YACTqB,sBAAsBC,IAAI,CAAC;gBAAEC,MAAM;oBAACvB;iBAAM;gBAAEwB,QAAQ;YAAQ;QAC9D;QAEAZ,YAAYa,OAAO,CAAC,CAAC,EAAEC,SAAS,EAAEC,KAAK,EAAE;YACvCN,sBAAsBC,IAAI,CAAC;gBACzBC,MAAM;oBAACI;oBAAOD;iBAAU;gBACxBF,QAAQ;YACV;QACF;QAEAN,OAAOU,OAAO,CAACf,OAAOY,OAAO,CAAC,CAAC,CAACI,WAAWH,UAAU;YACnD,IAAIG,WAAW;gBACbR,sBAAsBC,IAAI,CAAC;oBACzBC,MAAM;wBAAC,IAAI,CAACO,MAAM,CAACD,UAAU;wBAAEH;qBAAU;oBACzCF,QAAQ;gBACV;YACF;QACF;QAEAH,sBAAsBC,IAAI,CAAC;YAAEC,MAAM;gBAAC;aAAE;YAAEC,QAAQ;QAAQ;QAExD,MAAMO,uBAAuB,MAAM1C,aAAa;YAC9C2C,SAASX;YACTY,OAAO/B,GAAGgC,cAAc,CAACpB,cAAcqB,IAAI,CAAC,IAAI,CAACL,MAAM,CAACrB,UAAU;QACpE;QAEA,IAAIsB,sBAAsB,CAAC,EAAE,EAAEtC,IAAI;YACjCwB,aAAac,sBAAsB,CAAC,EAAE,EAAEtC;QAC1C;IACF;IAEA,MAAM2C,SAAS,MAAM7C,UAAU;QAC7BE,IAAIwB;QACJF,SAAS,IAAI;QACbnB;QACAM;QACAc,QAAQtB,WAAWsB,MAAM;QACzBqB,WAAW;QACX5B,WAAWrB,YAAYO;QACvBI;IACF;IAEA,OAAOqC;AACT,EAAC"}
|
package/dist/updateGlobal.js
CHANGED
@@ -22,4 +22,4 @@ export async function updateGlobal({ data, req = {}, slug }) {
|
|
22
22
|
return result;
|
23
23
|
}
|
24
24
|
|
25
|
-
//# sourceMappingURL=
|
25
|
+
//# sourceMappingURL=updateGlobal.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../src/updateGlobal.ts"],"sourcesContent":["import type { UpdateGlobalArgs } from 'payload/database'\nimport type { PayloadRequest, TypeWithID } from 'payload/types'\n\nimport toSnakeCase from 'to-snake-case'\n\nimport type { PostgresAdapter } from './types.js'\n\nimport { upsertRow } from './upsertRow/index.js'\n\nexport async function updateGlobal<T extends TypeWithID>(\n this: PostgresAdapter,\n { data, req = {} as PayloadRequest, slug }: UpdateGlobalArgs,\n): Promise<T> {\n const db = this.sessions[req.transactionID]?.db || this.drizzle\n const globalConfig = this.payload.globals.config.find((config) => config.slug === slug)\n const tableName = toSnakeCase(slug)\n\n const existingGlobal = await db.query[tableName].findFirst({})\n\n const result = await upsertRow<T>({\n ...(existingGlobal ? { id: existingGlobal.id, operation: 'update' } : { operation: 'create' }),\n adapter: this,\n data,\n db,\n fields: globalConfig.fields,\n tableName,\n req,\n })\n\n return result\n}\n"],"names":["toSnakeCase","upsertRow","updateGlobal","data","req","slug","db","sessions","transactionID","drizzle","globalConfig","payload","globals","config","find","tableName","existingGlobal","query","findFirst","result","id","operation","adapter","fields"],"mappings":"AAGA,OAAOA,iBAAiB,gBAAe;AAIvC,SAASC,SAAS,QAAQ,uBAAsB;AAEhD,OAAO,eAAeC,aAEpB,EAAEC,IAAI,EAAEC,MAAM,CAAC,CAAmB,EAAEC,IAAI,EAAoB;IAE5D,MAAMC,KAAK,IAAI,CAACC,QAAQ,CAACH,IAAII,aAAa,CAAC,EAAEF,MAAM,IAAI,CAACG,OAAO;IAC/D,MAAMC,eAAe,IAAI,CAACC,OAAO,CAACC,OAAO,CAACC,MAAM,CAACC,IAAI,CAAC,CAACD,SAAWA,OAAOR,IAAI,KAAKA;IAClF,MAAMU,YAAYf,YAAYK;IAE9B,MAAMW,iBAAiB,MAAMV,GAAGW,KAAK,CAACF,UAAU,CAACG,SAAS,CAAC,CAAC;IAE5D,MAAMC,SAAS,MAAMlB,UAAa;QAChC,GAAIe,iBAAiB;YAAEI,IAAIJ,eAAeI,EAAE;YAAEC,WAAW;QAAS,IAAI;YAAEA,WAAW;QAAS,CAAC;QAC7FC,SAAS,IAAI;QACbnB;QACAG;QACAiB,QAAQb,aAAaa,MAAM;QAC3BR;QACAX;IACF;IAEA,OAAOe;AACT"}
|
@@ -33,4 +33,4 @@ export async function updateGlobalVersion({ id, global, locale, req = {}, versio
|
|
33
33
|
return result;
|
34
34
|
}
|
35
35
|
|
36
|
-
//# sourceMappingURL=
|
36
|
+
//# sourceMappingURL=updateGlobalVersion.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../src/updateGlobalVersion.ts"],"sourcesContent":["import type { TypeWithVersion, UpdateGlobalVersionArgs } from 'payload/database'\nimport type { PayloadRequest, SanitizedGlobalConfig, TypeWithID } from 'payload/types'\n\nimport { buildVersionGlobalFields } from 'payload/versions'\nimport toSnakeCase from 'to-snake-case'\n\nimport type { PostgresAdapter } from './types.js'\n\nimport buildQuery from './queries/buildQuery.js'\nimport { upsertRow } from './upsertRow/index.js'\n\nexport async function updateGlobalVersion<T extends TypeWithID>(\n this: PostgresAdapter,\n {\n id,\n global,\n locale,\n req = {} as PayloadRequest,\n versionData,\n where: whereArg,\n }: UpdateGlobalVersionArgs<T>,\n) {\n const db = this.sessions[req.transactionID]?.db || this.drizzle\n const globalConfig: SanitizedGlobalConfig = this.payload.globals.config.find(\n ({ slug }) => slug === global,\n )\n const whereToUse = whereArg || { id: { equals: id } }\n const tableName = `_${toSnakeCase(global)}_v`\n const fields = buildVersionGlobalFields(globalConfig)\n\n const { where } = await buildQuery({\n adapter: this,\n fields,\n locale,\n tableName,\n where: whereToUse,\n })\n\n const result = await upsertRow<TypeWithVersion<T>>({\n id,\n adapter: this,\n data: versionData,\n db,\n fields,\n operation: 'update',\n tableName,\n where,\n req,\n })\n\n return result\n}\n"],"names":["buildVersionGlobalFields","toSnakeCase","buildQuery","upsertRow","updateGlobalVersion","id","global","locale","req","versionData","where","whereArg","db","sessions","transactionID","drizzle","globalConfig","payload","globals","config","find","slug","whereToUse","equals","tableName","fields","adapter","result","data","operation"],"mappings":"AAGA,SAASA,wBAAwB,QAAQ,mBAAkB;AAC3D,OAAOC,iBAAiB,gBAAe;AAIvC,OAAOC,gBAAgB,0BAAyB;AAChD,SAASC,SAAS,QAAQ,uBAAsB;AAEhD,OAAO,eAAeC,oBAEpB,EACEC,EAAE,EACFC,MAAM,EACNC,MAAM,EACNC,MAAM,CAAC,CAAmB,EAC1BC,WAAW,EACXC,OAAOC,QAAQ,EACY;IAE7B,MAAMC,KAAK,IAAI,CAACC,QAAQ,CAACL,IAAIM,aAAa,CAAC,EAAEF,MAAM,IAAI,CAACG,OAAO;IAC/D,MAAMC,eAAsC,IAAI,CAACC,OAAO,CAACC,OAAO,CAACC,MAAM,CAACC,IAAI,CAC1E,CAAC,EAAEC,IAAI,EAAE,GAAKA,SAASf;IAEzB,MAAMgB,aAAaX,YAAY;QAAEN,IAAI;YAAEkB,QAAQlB;QAAG;IAAE;IACpD,MAAMmB,YAAY,CAAC,CAAC,EAAEvB,YAAYK,QAAQ,EAAE,CAAC;IAC7C,MAAMmB,SAASzB,yBAAyBgB;IAExC,MAAM,EAAEN,KAAK,EAAE,GAAG,MAAMR,WAAW;QACjCwB,SAAS,IAAI;QACbD;QACAlB;QACAiB;QACAd,OAAOY;IACT;IAEA,MAAMK,SAAS,MAAMxB,UAA8B;QACjDE;QACAqB,SAAS,IAAI;QACbE,MAAMnB;QACNG;QACAa;QACAI,WAAW;QACXL;QACAd;QACAF;IACF;IAEA,OAAOmB;AACT"}
|
package/dist/updateVersion.js
CHANGED
@@ -33,4 +33,4 @@ export async function updateVersion({ id, collection, locale, req = {}, versionD
|
|
33
33
|
return result;
|
34
34
|
}
|
35
35
|
|
36
|
-
//# sourceMappingURL=
|
36
|
+
//# sourceMappingURL=updateVersion.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../src/updateVersion.ts"],"sourcesContent":["import type { TypeWithVersion, UpdateVersionArgs } from 'payload/database'\nimport type { PayloadRequest, SanitizedCollectionConfig, TypeWithID } from 'payload/types'\n\nimport { buildVersionCollectionFields } from 'payload/versions'\nimport toSnakeCase from 'to-snake-case'\n\nimport type { PostgresAdapter } from './types.js'\n\nimport buildQuery from './queries/buildQuery.js'\nimport { upsertRow } from './upsertRow/index.js'\n\nexport async function updateVersion<T extends TypeWithID>(\n this: PostgresAdapter,\n {\n id,\n collection,\n locale,\n req = {} as PayloadRequest,\n versionData,\n where: whereArg,\n }: UpdateVersionArgs<T>,\n) {\n const db = this.sessions[req.transactionID]?.db || this.drizzle\n const collectionConfig: SanitizedCollectionConfig = this.payload.collections[collection].config\n const whereToUse = whereArg || { id: { equals: id } }\n const tableName = `_${toSnakeCase(collection)}_v`\n const fields = buildVersionCollectionFields(collectionConfig)\n\n const { where } = await buildQuery({\n adapter: this,\n fields,\n locale,\n tableName,\n where: whereToUse,\n })\n\n const result = await upsertRow<TypeWithVersion<T>>({\n id,\n adapter: this,\n data: versionData,\n db,\n fields,\n operation: 'update',\n tableName,\n where,\n req,\n })\n\n return result\n}\n"],"names":["buildVersionCollectionFields","toSnakeCase","buildQuery","upsertRow","updateVersion","id","collection","locale","req","versionData","where","whereArg","db","sessions","transactionID","drizzle","collectionConfig","payload","collections","config","whereToUse","equals","tableName","fields","adapter","result","data","operation"],"mappings":"AAGA,SAASA,4BAA4B,QAAQ,mBAAkB;AAC/D,OAAOC,iBAAiB,gBAAe;AAIvC,OAAOC,gBAAgB,0BAAyB;AAChD,SAASC,SAAS,QAAQ,uBAAsB;AAEhD,OAAO,eAAeC,cAEpB,EACEC,EAAE,EACFC,UAAU,EACVC,MAAM,EACNC,MAAM,CAAC,CAAmB,EAC1BC,WAAW,EACXC,OAAOC,QAAQ,EACM;IAEvB,MAAMC,KAAK,IAAI,CAACC,QAAQ,CAACL,IAAIM,aAAa,CAAC,EAAEF,MAAM,IAAI,CAACG,OAAO;IAC/D,MAAMC,mBAA8C,IAAI,CAACC,OAAO,CAACC,WAAW,CAACZ,WAAW,CAACa,MAAM;IAC/F,MAAMC,aAAaT,YAAY;QAAEN,IAAI;YAAEgB,QAAQhB;QAAG;IAAE;IACpD,MAAMiB,YAAY,CAAC,CAAC,EAAErB,YAAYK,YAAY,EAAE,CAAC;IACjD,MAAMiB,SAASvB,6BAA6BgB;IAE5C,MAAM,EAAEN,KAAK,EAAE,GAAG,MAAMR,WAAW;QACjCsB,SAAS,IAAI;QACbD;QACAhB;QACAe;QACAZ,OAAOU;IACT;IAEA,MAAMK,SAAS,MAAMtB,UAA8B;QACjDE;QACAmB,SAAS,IAAI;QACbE,MAAMjB;QACNG;QACAW;QACAI,WAAW;QACXL;QACAZ;QACAF;IACF;IAEA,OAAOiB;AACT"}
|
@@ -7,4 +7,4 @@ export const deleteExistingArrayRows = async ({ adapter, db, parentID, tableName
|
|
7
7
|
await db.delete(table).where(and(...whereConstraints));
|
8
8
|
};
|
9
9
|
|
10
|
-
//# sourceMappingURL=
|
10
|
+
//# sourceMappingURL=deleteExistingArrayRows.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../../src/upsertRow/deleteExistingArrayRows.ts"],"sourcesContent":["import { and, eq } from 'drizzle-orm'\n\nimport type { DrizzleDB, PostgresAdapter } from '../types.js'\n\ntype Args = {\n adapter: PostgresAdapter\n db: DrizzleDB\n parentID: unknown\n tableName: string\n}\n\nexport const deleteExistingArrayRows = async ({\n adapter,\n db,\n parentID,\n tableName,\n}: Args): Promise<void> => {\n const table = adapter.tables[tableName]\n\n const whereConstraints = [eq(table._parentID, parentID)]\n\n await db.delete(table).where(and(...whereConstraints))\n}\n"],"names":["and","eq","deleteExistingArrayRows","adapter","db","parentID","tableName","table","tables","whereConstraints","_parentID","delete","where"],"mappings":"AAAA,SAASA,GAAG,EAAEC,EAAE,QAAQ,cAAa;AAWrC,OAAO,MAAMC,0BAA0B,OAAO,EAC5CC,OAAO,EACPC,EAAE,EACFC,QAAQ,EACRC,SAAS,EACJ;IACL,MAAMC,QAAQJ,QAAQK,MAAM,CAACF,UAAU;IAEvC,MAAMG,mBAAmB;QAACR,GAAGM,MAAMG,SAAS,EAAEL;KAAU;IAExD,MAAMD,GAAGO,MAAM,CAACJ,OAAOK,KAAK,CAACZ,OAAOS;AACtC,EAAC"}
|
@@ -30,4 +30,4 @@ export const deleteExistingRowsByPath = async ({ adapter, db, localeColumnName =
|
|
30
30
|
}
|
31
31
|
};
|
32
32
|
|
33
|
-
//# sourceMappingURL=
|
33
|
+
//# sourceMappingURL=deleteExistingRowsByPath.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../../src/upsertRow/deleteExistingRowsByPath.ts"],"sourcesContent":["import { and, eq, inArray } from 'drizzle-orm'\n\nimport type { DrizzleDB, PostgresAdapter } from '../types.js'\n\ntype Args = {\n adapter: PostgresAdapter\n db: DrizzleDB\n localeColumnName?: string\n parentColumnName?: string\n parentID: unknown\n pathColumnName?: string\n rows: Record<string, unknown>[]\n tableName: string\n}\n\nexport const deleteExistingRowsByPath = async ({\n adapter,\n db,\n localeColumnName = '_locale',\n parentColumnName = '_parentID',\n parentID,\n pathColumnName = '_path',\n rows,\n tableName,\n}: Args): Promise<void> => {\n const localizedPathsToDelete = new Set<string>()\n const pathsToDelete = new Set<string>()\n const table = adapter.tables[tableName]\n\n rows.forEach((row) => {\n const path = row[pathColumnName]\n const localeData = row[localeColumnName]\n if (typeof path === 'string') {\n if (typeof localeData === 'string') {\n localizedPathsToDelete.add(path)\n } else {\n pathsToDelete.add(path)\n }\n }\n })\n\n if (localizedPathsToDelete.size > 0) {\n const whereConstraints = [eq(table[parentColumnName], parentID)]\n\n if (pathColumnName)\n whereConstraints.push(inArray(table[pathColumnName], Array.from(localizedPathsToDelete)))\n\n await db.delete(table).where(and(...whereConstraints))\n }\n\n if (pathsToDelete.size > 0) {\n const whereConstraints = [eq(table[parentColumnName], parentID)]\n\n if (pathColumnName)\n whereConstraints.push(inArray(table[pathColumnName], Array.from(pathsToDelete)))\n\n await db.delete(table).where(and(...whereConstraints))\n }\n}\n"],"names":["and","eq","inArray","deleteExistingRowsByPath","adapter","db","localeColumnName","parentColumnName","parentID","pathColumnName","rows","tableName","localizedPathsToDelete","Set","pathsToDelete","table","tables","forEach","row","path","localeData","add","size","whereConstraints","push","Array","from","delete","where"],"mappings":"AAAA,SAASA,GAAG,EAAEC,EAAE,EAAEC,OAAO,QAAQ,cAAa;AAe9C,OAAO,MAAMC,2BAA2B,OAAO,EAC7CC,OAAO,EACPC,EAAE,EACFC,mBAAmB,SAAS,EAC5BC,mBAAmB,WAAW,EAC9BC,QAAQ,EACRC,iBAAiB,OAAO,EACxBC,IAAI,EACJC,SAAS,EACJ;IACL,MAAMC,yBAAyB,IAAIC;IACnC,MAAMC,gBAAgB,IAAID;IAC1B,MAAME,QAAQX,QAAQY,MAAM,CAACL,UAAU;IAEvCD,KAAKO,OAAO,CAAC,CAACC;QACZ,MAAMC,OAAOD,GAAG,CAACT,eAAe;QAChC,MAAMW,aAAaF,GAAG,CAACZ,iBAAiB;QACxC,IAAI,OAAOa,SAAS,UAAU;YAC5B,IAAI,OAAOC,eAAe,UAAU;gBAClCR,uBAAuBS,GAAG,CAACF;YAC7B,OAAO;gBACLL,cAAcO,GAAG,CAACF;YACpB;QACF;IACF;IAEA,IAAIP,uBAAuBU,IAAI,GAAG,GAAG;QACnC,MAAMC,mBAAmB;YAACtB,GAAGc,KAAK,CAACR,iBAAiB,EAAEC;SAAU;QAEhE,IAAIC,gBACFc,iBAAiBC,IAAI,CAACtB,QAAQa,KAAK,CAACN,eAAe,EAAEgB,MAAMC,IAAI,CAACd;QAElE,MAAMP,GAAGsB,MAAM,CAACZ,OAAOa,KAAK,CAAC5B,OAAOuB;IACtC;IAEA,IAAIT,cAAcQ,IAAI,GAAG,GAAG;QAC1B,MAAMC,mBAAmB;YAACtB,GAAGc,KAAK,CAACR,iBAAiB,EAAEC;SAAU;QAEhE,IAAIC,gBACFc,iBAAiBC,IAAI,CAACtB,QAAQa,KAAK,CAACN,eAAe,EAAEgB,MAAMC,IAAI,CAACZ;QAElE,MAAMT,GAAGsB,MAAM,CAACZ,OAAOa,KAAK,CAAC5B,OAAOuB;IACtC;AACF,EAAC"}
|
package/dist/upsertRow/index.js
CHANGED
@@ -273,4 +273,4 @@ export const upsertRow = async ({ id, adapter, data, db, fields, operation, path
|
|
273
273
|
return result;
|
274
274
|
};
|
275
275
|
|
276
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91cHNlcnRSb3cvaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tcGFyYW0tcmVhc3NpZ24gKi9cbmltcG9ydCB0eXBlIHsgVHlwZVdpdGhJRCB9IGZyb20gJ3BheWxvYWQvdHlwZXMnXG5cbmltcG9ydCB7IGVxIH0gZnJvbSAnZHJpenpsZS1vcm0nXG5pbXBvcnQgeyBWYWxpZGF0aW9uRXJyb3IgfSBmcm9tICdwYXlsb2FkL2Vycm9ycydcblxuaW1wb3J0IHR5cGUgeyBCbG9ja1Jvd1RvSW5zZXJ0IH0gZnJvbSAnLi4vdHJhbnNmb3JtL3dyaXRlL3R5cGVzLmpzJ1xuaW1wb3J0IHR5cGUgeyBBcmdzIH0gZnJvbSAnLi90eXBlcy5qcydcblxuaW1wb3J0IHsgYnVpbGRGaW5kTWFueUFyZ3MgfSBmcm9tICcuLi9maW5kL2J1aWxkRmluZE1hbnlBcmdzLmpzJ1xuaW1wb3J0IHsgdHJhbnNmb3JtIH0gZnJvbSAnLi4vdHJhbnNmb3JtL3JlYWQvaW5kZXguanMnXG5pbXBvcnQgeyB0cmFuc2Zvcm1Gb3JXcml0ZSB9IGZyb20gJy4uL3RyYW5zZm9ybS93cml0ZS9pbmRleC5qcydcbmltcG9ydCB7IGRlbGV0ZUV4aXN0aW5nQXJyYXlSb3dzIH0gZnJvbSAnLi9kZWxldGVFeGlzdGluZ0FycmF5Um93cy5qcydcbmltcG9ydCB7IGRlbGV0ZUV4aXN0aW5nUm93c0J5UGF0aCB9IGZyb20gJy4vZGVsZXRlRXhpc3RpbmdSb3dzQnlQYXRoLmpzJ1xuaW1wb3J0IHsgaW5zZXJ0QXJyYXlzIH0gZnJvbSAnLi9pbnNlcnRBcnJheXMuanMnXG5cbmV4cG9ydCBjb25zdCB1cHNlcnRSb3cgPSBhc3luYyA8VCBleHRlbmRzIFR5cGVXaXRoSUQ+KHtcbiAgaWQsXG4gIGFkYXB0ZXIsXG4gIGRhdGEsXG4gIGRiLFxuICBmaWVsZHMsXG4gIG9wZXJhdGlvbixcbiAgcGF0aCA9ICcnLFxuICByZXEsXG4gIHRhYmxlTmFtZSxcbiAgdXBzZXJ0VGFyZ2V0LFxuICB3aGVyZSxcbn06IEFyZ3MpOiBQcm9taXNlPFQ+ID0+IHtcbiAgLy8gU3BsaXQgb3V0IHRoZSBpbmNvbWluZyBkYXRhIGludG8gdGhlIGNvcnJlc3BvbmRpbmc6XG4gIC8vIGJhc2Ugcm93LCBsb2NhbGVzLCByZWxhdGlvbnNoaXBzLCBibG9ja3MsIGFuZCBhcnJheXNcbiAgY29uc3Qgcm93VG9JbnNlcnQgPSB0cmFuc2Zvcm1Gb3JXcml0ZSh7XG4gICAgYWRhcHRlcixcbiAgICBkYXRhLFxuICAgIGZpZWxkcyxcbiAgICBwYXRoLFxuICAgIHRhYmxlTmFtZSxcbiAgfSlcblxuICAvLyBGaXJzdCwgd2UgaW5zZXJ0IHRoZSBtYWluIHJvd1xuICBsZXQgaW5zZXJ0ZWRSb3c6IFJlY29yZDxzdHJpbmcsIHVua25vd24+XG5cbiAgdHJ5IHtcbiAgICBpZiAob3BlcmF0aW9uID09PSAndXBkYXRlJykge1xuICAgICAgY29uc3QgdGFyZ2V0ID0gdXBzZXJ0VGFyZ2V0IHx8IGFkYXB0ZXIudGFibGVzW3RhYmxlTmFtZV0uaWRcblxuICAgICAgaWYgKGlkKSB7XG4gICAgICAgIHJvd1RvSW5zZXJ0LnJvdy5pZCA9IGlkXG4gICAgICAgIDtbaW5zZXJ0ZWRSb3ddID0gYXdhaXQgZGJcbiAgICAgICAgICAuaW5zZXJ0KGFkYXB0ZXIudGFibGVzW3RhYmxlTmFtZV0pXG4gICAgICAgICAgLnZhbHVlcyhyb3dUb0luc2VydC5yb3cpXG4gICAgICAgICAgLm9uQ29uZmxpY3REb1VwZGF0ZSh7IHNldDogcm93VG9JbnNlcnQucm93LCB0YXJnZXQgfSlcbiAgICAgICAgICAucmV0dXJuaW5nKClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIDtbaW5zZXJ0ZWRSb3ddID0gYXdhaXQgZGJcbiAgICAgICAgICAuaW5zZXJ0KGFkYXB0ZXIudGFibGVzW3RhYmxlTmFtZV0pXG4gICAgICAgICAgLnZhbHVlcyhyb3dUb0luc2VydC5yb3cpXG4gICAgICAgICAgLm9uQ29uZmxpY3REb1VwZGF0ZSh7IHNldDogcm93VG9JbnNlcnQucm93LCB0YXJnZXQsIHdoZXJlIH0pXG4gICAgICAgICAgLnJldHVybmluZygpXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIDtbaW5zZXJ0ZWRSb3ddID0gYXdhaXQgZGJcbiAgICAgICAgLmluc2VydChhZGFwdGVyLnRhYmxlc1t0YWJsZU5hbWVdKVxuICAgICAgICAudmFsdWVzKHJvd1RvSW5zZXJ0LnJvdylcbiAgICAgICAgLnJldHVybmluZygpXG4gICAgfVxuXG4gICAgY29uc3QgbG9jYWxlc1RvSW5zZXJ0OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPltdID0gW11cbiAgICBjb25zdCByZWxhdGlvbnNUb0luc2VydDogUmVjb3JkPHN0cmluZywgdW5rbm93bj5bXSA9IFtdXG4gICAgY29uc3QgdGV4dHNUb0luc2VydDogUmVjb3JkPHN0cmluZywgdW5rbm93bj5bXSA9IFtdXG4gICAgY29uc3QgbnVtYmVyc1RvSW5zZXJ0OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPltdID0gW11cbiAgICBjb25zdCBibG9ja3NUb0luc2VydDogeyBbYmxvY2tUeXBlOiBzdHJpbmddOiBCbG9ja1Jvd1RvSW5zZXJ0W10gfSA9IHt9XG4gICAgY29uc3Qgc2VsZWN0c1RvSW5zZXJ0OiB7IFtzZWxlY3RUYWJsZU5hbWU6IHN0cmluZ106IFJlY29yZDxzdHJpbmcsIHVua25vd24+W10gfSA9IHt9XG5cbiAgICAvLyBJZiB0aGVyZSBhcmUgbG9jYWxlIHJvd3Mgd2l0aCBkYXRhLCBhZGQgdGhlIHBhcmVudCBhbmQgbG9jYWxlIHRvIGVhY2hcbiAgICBpZiAoT2JqZWN0LmtleXMocm93VG9JbnNlcnQubG9jYWxlcykubGVuZ3RoID4gMCkge1xuICAgICAgT2JqZWN0LmVudHJpZXMocm93VG9JbnNlcnQubG9jYWxlcykuZm9yRWFjaCgoW2xvY2FsZSwgbG9jYWxlUm93XSkgPT4ge1xuICAgICAgICBsb2NhbGVSb3cuX3BhcmVudElEID0gaW5zZXJ0ZWRSb3cuaWRcbiAgICAgICAgbG9jYWxlUm93Ll9sb2NhbGUgPSBsb2NhbGVcbiAgICAgICAgbG9jYWxlc1RvSW5zZXJ0LnB1c2gobG9jYWxlUm93KVxuICAgICAgfSlcbiAgICB9XG5cbiAgICAvLyBJZiB0aGVyZSBhcmUgcmVsYXRpb25zaGlwcywgYWRkIHBhcmVudCB0byBlYWNoXG4gICAgaWYgKHJvd1RvSW5zZXJ0LnJlbGF0aW9uc2hpcHMubGVuZ3RoID4gMCkge1xuICAgICAgcm93VG9JbnNlcnQucmVsYXRpb25zaGlwcy5mb3JFYWNoKChyZWxhdGlvbikgPT4ge1xuICAgICAgICByZWxhdGlvbi5wYXJlbnQgPSBpbnNlcnRlZFJvdy5pZFxuICAgICAgICByZWxhdGlvbnNUb0luc2VydC5wdXNoKHJlbGF0aW9uKVxuICAgICAgfSlcbiAgICB9XG5cbiAgICAvLyBJZiB0aGVyZSBhcmUgdGV4dHMsIGFkZCBwYXJlbnQgdG8gZWFjaFxuICAgIGlmIChyb3dUb0luc2VydC50ZXh0cy5sZW5ndGggPiAwKSB7XG4gICAgICByb3dUb0luc2VydC50ZXh0cy5mb3JFYWNoKCh0ZXh0Um93KSA9PiB7XG4gICAgICAgIHRleHRSb3cucGFyZW50ID0gaW5zZXJ0ZWRSb3cuaWRcbiAgICAgICAgdGV4dHNUb0luc2VydC5wdXNoKHRleHRSb3cpXG4gICAgICB9KVxuICAgIH1cblxuICAgIC8vIElmIHRoZXJlIGFyZSBudW1iZXJzLCBhZGQgcGFyZW50IHRvIGVhY2hcbiAgICBpZiAocm93VG9JbnNlcnQubnVtYmVycy5sZW5ndGggPiAwKSB7XG4gICAgICByb3dUb0luc2VydC5udW1iZXJzLmZvckVhY2goKG51bWJlclJvdykgPT4ge1xuICAgICAgICBudW1iZXJSb3cucGFyZW50ID0gaW5zZXJ0ZWRSb3cuaWRcbiAgICAgICAgbnVtYmVyc1RvSW5zZXJ0LnB1c2gobnVtYmVyUm93KVxuICAgICAgfSlcbiAgICB9XG5cbiAgICAvLyBJZiB0aGVyZSBhcmUgc2VsZWN0cywgYWRkIHBhcmVudCB0byBlYWNoLCBhbmQgdGhlblxuICAgIC8vIHN0b3JlIGJ5IHRhYmxlIG5hbWUgYW5kIHJvd3NcbiAgICBpZiAoT2JqZWN0LmtleXMocm93VG9JbnNlcnQuc2VsZWN0cykubGVuZ3RoID4gMCkge1xuICAgICAgT2JqZWN0LmVudHJpZXMocm93VG9JbnNlcnQuc2VsZWN0cykuZm9yRWFjaCgoW3NlbGVjdFRhYmxlTmFtZSwgc2VsZWN0Um93c10pID0+IHtcbiAgICAgICAgc2VsZWN0Um93cy5mb3JFYWNoKChyb3cpID0+IHtcbiAgICAgICAgICBpZiAodHlwZW9mIHJvdy5wYXJlbnQgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICByb3cucGFyZW50ID0gaW5zZXJ0ZWRSb3cuaWRcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKCFzZWxlY3RzVG9JbnNlcnRbc2VsZWN0VGFibGVOYW1lXSkgc2VsZWN0c1RvSW5zZXJ0W3NlbGVjdFRhYmxlTmFtZV0gPSBbXVxuICAgICAgICAgIHNlbGVjdHNUb0luc2VydFtzZWxlY3RUYWJsZU5hbWVdLnB1c2gocm93KVxuICAgICAgICB9KVxuICAgICAgfSlcbiAgICB9XG5cbiAgICAvLyBJZiB0aGVyZSBhcmUgYmxvY2tzLCBhZGQgcGFyZW50IHRvIGVhY2gsIGFuZCB0aGVuXG4gICAgLy8gc3RvcmUgYnkgdGFibGUgbmFtZSBhbmQgcm93c1xuICAgIE9iamVjdC5rZXlzKHJvd1RvSW5zZXJ0LmJsb2NrcykuZm9yRWFjaCgoYmxvY2tOYW1lKSA9PiB7XG4gICAgICByb3dUb0luc2VydC5ibG9ja3NbYmxvY2tOYW1lXS5mb3JFYWNoKChibG9ja1JvdykgPT4ge1xuICAgICAgICBibG9ja1Jvdy5yb3cuX3BhcmVudElEID0gaW5zZXJ0ZWRSb3cuaWRcbiAgICAgICAgaWYgKCFibG9ja3NUb0luc2VydFtibG9ja05hbWVdKSBibG9ja3NUb0luc2VydFtibG9ja05hbWVdID0gW11cbiAgICAgICAgaWYgKGJsb2NrUm93LnJvdy51dWlkKSB7XG4gICAgICAgICAgZGVsZXRlIGJsb2NrUm93LnJvdy51dWlkXG4gICAgICAgIH1cbiAgICAgICAgYmxvY2tzVG9JbnNlcnRbYmxvY2tOYW1lXS5wdXNoKGJsb2NrUm93KVxuICAgICAgfSlcbiAgICB9KVxuXG4gICAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAgIC8vIElOU0VSVCBMT0NBTEVTXG4gICAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG4gICAgaWYgKGxvY2FsZXNUb0luc2VydC5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBsb2NhbGVUYWJsZSA9IGFkYXB0ZXIudGFibGVzW2Ake3RhYmxlTmFtZX1fbG9jYWxlc2BdXG5cbiAgICAgIGlmIChvcGVyYXRpb24gPT09ICd1cGRhdGUnKSB7XG4gICAgICAgIGF3YWl0IGRiLmRlbGV0ZShsb2NhbGVUYWJsZSkud2hlcmUoZXEobG9jYWxlVGFibGUuX3BhcmVudElELCBpbnNlcnRlZFJvdy5pZCkpXG4gICAgICB9XG5cbiAgICAgIGF3YWl0IGRiLmluc2VydChsb2NhbGVUYWJsZSkudmFsdWVzKGxvY2FsZXNUb0luc2VydClcbiAgICB9XG5cbiAgICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gICAgLy8gSU5TRVJUIFJFTEFUSU9OU0hJUFNcbiAgICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbiAgICBjb25zdCByZWxhdGlvbnNoaXBzVGFibGVOYW1lID0gYCR7dGFibGVOYW1lfV9yZWxzYFxuXG4gICAgaWYgKG9wZXJhdGlvbiA9PT0gJ3VwZGF0ZScpIHtcbiAgICAgIGF3YWl0IGRlbGV0ZUV4aXN0aW5nUm93c0J5UGF0aCh7XG4gICAgICAgIGFkYXB0ZXIsXG4gICAgICAgIGRiLFxuICAgICAgICBsb2NhbGVDb2x1bW5OYW1lOiAnbG9jYWxlJyxcbiAgICAgICAgcGFyZW50Q29sdW1uTmFtZTogJ3BhcmVudCcsXG4gICAgICAgIHBhcmVudElEOiBpbnNlcnRlZFJvdy5pZCxcbiAgICAgICAgcGF0aENvbHVtbk5hbWU6ICdwYXRoJyxcbiAgICAgICAgcm93czogWy4uLnJlbGF0aW9uc1RvSW5zZXJ0LCAuLi5yb3dUb0luc2VydC5yZWxhdGlvbnNoaXBzVG9EZWxldGVdLFxuICAgICAgICB0YWJsZU5hbWU6IHJlbGF0aW9uc2hpcHNUYWJsZU5hbWUsXG4gICAgICB9KVxuICAgIH1cblxuICAgIGlmIChyZWxhdGlvbnNUb0luc2VydC5sZW5ndGggPiAwKSB7XG4gICAgICBhd2FpdCBkYi5pbnNlcnQoYWRhcHRlci50YWJsZXNbcmVsYXRpb25zaGlwc1RhYmxlTmFtZV0pLnZhbHVlcyhyZWxhdGlvbnNUb0luc2VydClcbiAgICB9XG5cbiAgICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gICAgLy8gSU5TRVJUIGhhc01hbnkgVEVYVFNcbiAgICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbiAgICBjb25zdCB0ZXh0c1RhYmxlTmFtZSA9IGAke3RhYmxlTmFtZX1fdGV4dHNgXG5cbiAgICBpZiAob3BlcmF0aW9uID09PSAndXBkYXRlJykge1xuICAgICAgYXdhaXQgZGVsZXRlRXhpc3RpbmdSb3dzQnlQYXRoKHtcbiAgICAgICAgYWRhcHRlcixcbiAgICAgICAgZGIsXG4gICAgICAgIGxvY2FsZUNvbHVtbk5hbWU6ICdsb2NhbGUnLFxuICAgICAgICBwYXJlbnRDb2x1bW5OYW1lOiAncGFyZW50JyxcbiAgICAgICAgcGFyZW50SUQ6IGluc2VydGVkUm93LmlkLFxuICAgICAgICBwYXRoQ29sdW1uTmFtZTogJ3BhdGgnLFxuICAgICAgICByb3dzOiB0ZXh0c1RvSW5zZXJ0LFxuICAgICAgICB0YWJsZU5hbWU6IHRleHRzVGFibGVOYW1lLFxuICAgICAgfSlcbiAgICB9XG5cbiAgICBpZiAodGV4dHNUb0luc2VydC5sZW5ndGggPiAwKSB7XG4gICAgICBhd2FpdCBkYi5pbnNlcnQoYWRhcHRlci50YWJsZXNbdGV4dHNUYWJsZU5hbWVdKS52YWx1ZXModGV4dHNUb0luc2VydCkucmV0dXJuaW5nKClcbiAgICB9XG5cbiAgICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gICAgLy8gSU5TRVJUIGhhc01hbnkgTlVNQkVSU1xuICAgIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuICAgIGNvbnN0IG51bWJlcnNUYWJsZU5hbWUgPSBgJHt0YWJsZU5hbWV9X251bWJlcnNgXG5cbiAgICBpZiAob3BlcmF0aW9uID09PSAndXBkYXRlJykge1xuICAgICAgYXdhaXQgZGVsZXRlRXhpc3RpbmdSb3dzQnlQYXRoKHtcbiAgICAgICAgYWRhcHRlcixcbiAgICAgICAgZGIsXG4gICAgICAgIGxvY2FsZUNvbHVtbk5hbWU6ICdsb2NhbGUnLFxuICAgICAgICBwYXJlbnRDb2x1bW5OYW1lOiAncGFyZW50JyxcbiAgICAgICAgcGFyZW50SUQ6IGluc2VydGVkUm93LmlkLFxuICAgICAgICBwYXRoQ29sdW1uTmFtZTogJ3BhdGgnLFxuICAgICAgICByb3dzOiBudW1iZXJzVG9JbnNlcnQsXG4gICAgICAgIHRhYmxlTmFtZTogbnVtYmVyc1RhYmxlTmFtZSxcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgaWYgKG51bWJlcnNUb0luc2VydC5sZW5ndGggPiAwKSB7XG4gICAgICBhd2FpdCBkYi5pbnNlcnQoYWRhcHRlci50YWJsZXNbbnVtYmVyc1RhYmxlTmFtZV0pLnZhbHVlcyhudW1iZXJzVG9JbnNlcnQpLnJldHVybmluZygpXG4gICAgfVxuXG4gICAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAgIC8vIElOU0VSVCBCTE9DS1NcbiAgICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbiAgICBjb25zdCBpbnNlcnRlZEJsb2NrUm93czogUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgdW5rbm93bj5bXT4gPSB7fVxuXG4gICAgaWYgKG9wZXJhdGlvbiA9PT0gJ3VwZGF0ZScpIHtcbiAgICAgIGZvciAoY29uc3QgYmxvY2tOYW1lIG9mIHJvd1RvSW5zZXJ0LmJsb2Nrc1RvRGVsZXRlKSB7XG4gICAgICAgIGNvbnN0IGJsb2NrVGFibGVOYW1lID0gYCR7dGFibGVOYW1lfV9ibG9ja3NfJHtibG9ja05hbWV9YFxuICAgICAgICBjb25zdCBibG9ja1RhYmxlID0gYWRhcHRlci50YWJsZXNbYmxvY2tUYWJsZU5hbWVdXG4gICAgICAgIGF3YWl0IGRiLmRlbGV0ZShibG9ja1RhYmxlKS53aGVyZShlcShibG9ja1RhYmxlLl9wYXJlbnRJRCwgaW5zZXJ0ZWRSb3cuaWQpKVxuICAgICAgfVxuICAgIH1cblxuICAgIGZvciAoY29uc3QgW2Jsb2NrTmFtZSwgYmxvY2tSb3dzXSBvZiBPYmplY3QuZW50cmllcyhibG9ja3NUb0luc2VydCkpIHtcbiAgICAgIGluc2VydGVkQmxvY2tSb3dzW2Jsb2NrTmFtZV0gPSBhd2FpdCBkYlxuICAgICAgICAuaW5zZXJ0KGFkYXB0ZXIudGFibGVzW2Ake3RhYmxlTmFtZX1fYmxvY2tzXyR7YmxvY2tOYW1lfWBdKVxuICAgICAgICAudmFsdWVzKGJsb2NrUm93cy5tYXAoKHsgcm93IH0pID0+IHJvdykpXG4gICAgICAgIC5yZXR1cm5pbmcoKVxuXG4gICAgICBpbnNlcnRlZEJsb2NrUm93c1tibG9ja05hbWVdLmZvckVhY2goKHJvdywgaSkgPT4ge1xuICAgICAgICBibG9ja1Jvd3NbaV0ucm93ID0gcm93XG4gICAgICB9KVxuXG4gICAgICBjb25zdCBibG9ja0xvY2FsZUluZGV4TWFwOiBudW1iZXJbXSA9IFtdXG5cbiAgICAgIGNvbnN0IGJsb2NrTG9jYWxlUm93c1RvSW5zZXJ0ID0gYmxvY2tSb3dzLnJlZHVjZSgoYWNjLCBibG9ja1JvdywgaSkgPT4ge1xuICAgICAgICBpZiAoT2JqZWN0LmVudHJpZXMoYmxvY2tSb3cubG9jYWxlcykubGVuZ3RoID4gMCkge1xuICAgICAgICAgIE9iamVjdC5lbnRyaWVzKGJsb2NrUm93LmxvY2FsZXMpLmZvckVhY2goKFtibG9ja0xvY2FsZSwgYmxvY2tMb2NhbGVEYXRhXSkgPT4ge1xuICAgICAgICAgICAgaWYgKE9iamVjdC5rZXlzKGJsb2NrTG9jYWxlRGF0YSkubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICBibG9ja0xvY2FsZURhdGEuX3BhcmVudElEID0gYmxvY2tSb3cucm93LmlkXG4gICAgICAgICAgICAgIGJsb2NrTG9jYWxlRGF0YS5fbG9jYWxlID0gYmxvY2tMb2NhbGVcbiAgICAgICAgICAgICAgYWNjLnB1c2goYmxvY2tMb2NhbGVEYXRhKVxuICAgICAgICAgICAgICBibG9ja0xvY2FsZUluZGV4TWFwLnB1c2goaSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGFjY1xuICAgICAgfSwgW10pXG5cbiAgICAgIGlmIChibG9ja0xvY2FsZVJvd3NUb0luc2VydC5sZW5ndGggPiAwKSB7XG4gICAgICAgIGF3YWl0IGRiXG4gICAgICAgICAgLmluc2VydChhZGFwdGVyLnRhYmxlc1tgJHt0YWJsZU5hbWV9X2Jsb2Nrc18ke2Jsb2NrTmFtZX1fbG9jYWxlc2BdKVxuICAgICAgICAgIC52YWx1ZXMoYmxvY2tMb2NhbGVSb3dzVG9JbnNlcnQpXG4gICAgICAgICAgLnJldHVybmluZygpXG4gICAgICB9XG5cbiAgICAgIGF3YWl0IGluc2VydEFycmF5cyh7XG4gICAgICAgIGFkYXB0ZXIsXG4gICAgICAgIGFycmF5czogYmxvY2tSb3dzLm1hcCgoeyBhcnJheXMgfSkgPT4gYXJyYXlzKSxcbiAgICAgICAgZGIsXG4gICAgICAgIHBhcmVudFJvd3M6IGluc2VydGVkQmxvY2tSb3dzW2Jsb2NrTmFtZV0sXG4gICAgICB9KVxuICAgIH1cblxuICAgIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgICAvLyBJTlNFUlQgQVJSQVlTIFJFQ1VSU0lWRUxZXG4gICAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG4gICAgaWYgKG9wZXJhdGlvbiA9PT0gJ3VwZGF0ZScpIHtcbiAgICAgIGZvciAoY29uc3QgYXJyYXlUYWJsZU5hbWUgb2YgT2JqZWN0LmtleXMocm93VG9JbnNlcnQuYXJyYXlzKSkge1xuICAgICAgICBhd2FpdCBkZWxldGVFeGlzdGluZ0FycmF5Um93cyh7XG4gICAgICAgICAgYWRhcHRlcixcbiAgICAgICAgICBkYixcbiAgICAgICAgICBwYXJlbnRJRDogaW5zZXJ0ZWRSb3cuaWQsXG4gICAgICAgICAgdGFibGVOYW1lOiBhcnJheVRhYmxlTmFtZSxcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICBhd2FpdCBpbnNlcnRBcnJheXMoe1xuICAgICAgYWRhcHRlcixcbiAgICAgIGFycmF5czogW3Jvd1RvSW5zZXJ0LmFycmF5c10sXG4gICAgICBkYixcbiAgICAgIHBhcmVudFJvd3M6IFtpbnNlcnRlZFJvd10sXG4gICAgfSlcblxuICAgIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgICAvLyBJTlNFUlQgaGFzTWFueSBTRUxFQ1RTXG4gICAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG4gICAgZm9yIChjb25zdCBbc2VsZWN0VGFibGVOYW1lLCB0YWJsZVJvd3NdIG9mIE9iamVjdC5lbnRyaWVzKHNlbGVjdHNUb0luc2VydCkpIHtcbiAgICAgIGNvbnN0IHNlbGVjdFRhYmxlID0gYWRhcHRlci50YWJsZXNbc2VsZWN0VGFibGVOYW1lXVxuICAgICAgaWYgKG9wZXJhdGlvbiA9PT0gJ3VwZGF0ZScpIHtcbiAgICAgICAgYXdhaXQgZGIuZGVsZXRlKHNlbGVjdFRhYmxlKS53aGVyZShlcShzZWxlY3RUYWJsZS5wYXJlbnQsIGluc2VydGVkUm93LmlkKSlcbiAgICAgIH1cbiAgICAgIGF3YWl0IGRiLmluc2VydChzZWxlY3RUYWJsZSkudmFsdWVzKHRhYmxlUm93cykucmV0dXJuaW5nKClcbiAgICB9XG5cbiAgICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gICAgLy8gRXJyb3IgSGFuZGxpbmdcbiAgICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgdGhyb3cgZXJyb3IuY29kZSA9PT0gJzIzNTA1J1xuICAgICAgPyBuZXcgVmFsaWRhdGlvbkVycm9yKFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgZmllbGQ6IGFkYXB0ZXIuZmllbGRDb25zdHJhaW50c1t0YWJsZU5hbWVdW2Vycm9yLmNvbnN0cmFpbnRdLFxuICAgICAgICAgICAgICBtZXNzYWdlOiByZXEudCgnZXJyb3I6dmFsdWVNdXN0QmVVbmlxdWUnKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgICByZXEudCxcbiAgICAgICAgKVxuICAgICAgOiBlcnJvclxuICB9XG5cbiAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAvLyBSRVRSSUVWRSBORVdMWSBVUERBVEVEIFJPV1xuICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbiAgY29uc3QgZmluZE1hbnlBcmdzID0gYnVpbGRGaW5kTWFueUFyZ3Moe1xuICAgIGFkYXB0ZXIsXG4gICAgZGVwdGg6IDAsXG4gICAgZmllbGRzLFxuICAgIHRhYmxlTmFtZSxcbiAgfSlcblxuICBmaW5kTWFueUFyZ3Mud2hlcmUgPSBlcShhZGFwdGVyLnRhYmxlc1t0YWJsZU5hbWVdLmlkLCBpbnNlcnRlZFJvdy5pZClcblxuICBjb25zdCBkb2MgPSBhd2FpdCBkYi5xdWVyeVt0YWJsZU5hbWVdLmZpbmRGaXJzdChmaW5kTWFueUFyZ3MpXG5cbiAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAvLyBUUkFOU0ZPUk0gREFUQVxuICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbiAgY29uc3QgcmVzdWx0ID0gdHJhbnNmb3JtPFQ+KHtcbiAgICBjb25maWc6IGFkYXB0ZXIucGF5bG9hZC5jb25maWcsXG4gICAgZGF0YTogZG9jLFxuICAgIGZpZWxkcyxcbiAgfSlcblxuICByZXR1cm4gcmVzdWx0XG59XG4iXSwibmFtZXMiOlsiZXEiLCJWYWxpZGF0aW9uRXJyb3IiLCJidWlsZEZpbmRNYW55QXJncyIsInRyYW5zZm9ybSIsInRyYW5zZm9ybUZvcldyaXRlIiwiZGVsZXRlRXhpc3RpbmdBcnJheVJvd3MiLCJkZWxldGVFeGlzdGluZ1Jvd3NCeVBhdGgiLCJpbnNlcnRBcnJheXMiLCJ1cHNlcnRSb3ciLCJpZCIsImFkYXB0ZXIiLCJkYXRhIiwiZGIiLCJmaWVsZHMiLCJvcGVyYXRpb24iLCJwYXRoIiwicmVxIiwidGFibGVOYW1lIiwidXBzZXJ0VGFyZ2V0Iiwid2hlcmUiLCJyb3dUb0luc2VydCIsImluc2VydGVkUm93IiwidGFyZ2V0IiwidGFibGVzIiwicm93IiwiaW5zZXJ0IiwidmFsdWVzIiwib25Db25mbGljdERvVXBkYXRlIiwic2V0IiwicmV0dXJuaW5nIiwibG9jYWxlc1RvSW5zZXJ0IiwicmVsYXRpb25zVG9JbnNlcnQiLCJ0ZXh0c1RvSW5zZXJ0IiwibnVtYmVyc1RvSW5zZXJ0IiwiYmxvY2tzVG9JbnNlcnQiLCJzZWxlY3RzVG9JbnNlcnQiLCJPYmplY3QiLCJrZXlzIiwibG9jYWxlcyIsImxlbmd0aCIsImVudHJpZXMiLCJmb3JFYWNoIiwibG9jYWxlIiwibG9jYWxlUm93IiwiX3BhcmVudElEIiwiX2xvY2FsZSIsInB1c2giLCJyZWxhdGlvbnNoaXBzIiwicmVsYXRpb24iLCJwYXJlbnQiLCJ0ZXh0cyIsInRleHRSb3ciLCJudW1iZXJzIiwibnVtYmVyUm93Iiwic2VsZWN0cyIsInNlbGVjdFRhYmxlTmFtZSIsInNlbGVjdFJvd3MiLCJibG9ja3MiLCJibG9ja05hbWUiLCJibG9ja1JvdyIsInV1aWQiLCJsb2NhbGVUYWJsZSIsImRlbGV0ZSIsInJlbGF0aW9uc2hpcHNUYWJsZU5hbWUiLCJsb2NhbGVDb2x1bW5OYW1lIiwicGFyZW50Q29sdW1uTmFtZSIsInBhcmVudElEIiwicGF0aENvbHVtbk5hbWUiLCJyb3dzIiwicmVsYXRpb25zaGlwc1RvRGVsZXRlIiwidGV4dHNUYWJsZU5hbWUiLCJudW1iZXJzVGFibGVOYW1lIiwiaW5zZXJ0ZWRCbG9ja1Jvd3MiLCJibG9ja3NUb0RlbGV0ZSIsImJsb2NrVGFibGVOYW1lIiwiYmxvY2tUYWJsZSIsImJsb2NrUm93cyIsIm1hcCIsImkiLCJibG9ja0xvY2FsZUluZGV4TWFwIiwiYmxvY2tMb2NhbGVSb3dzVG9JbnNlcnQiLCJyZWR1Y2UiLCJhY2MiLCJibG9ja0xvY2FsZSIsImJsb2NrTG9jYWxlRGF0YSIsImFycmF5cyIsInBhcmVudFJvd3MiLCJhcnJheVRhYmxlTmFtZSIsInRhYmxlUm93cyIsInNlbGVjdFRhYmxlIiwiZXJyb3IiLCJjb2RlIiwiZmllbGQiLCJmaWVsZENvbnN0cmFpbnRzIiwiY29uc3RyYWludCIsIm1lc3NhZ2UiLCJ0IiwiZmluZE1hbnlBcmdzIiwiZGVwdGgiLCJkb2MiLCJxdWVyeSIsImZpbmRGaXJzdCIsInJlc3VsdCIsImNvbmZpZyIsInBheWxvYWQiXSwibWFwcGluZ3MiOiJBQUFBLG9DQUFvQyxHQUdwQyxTQUFTQSxFQUFFLFFBQVEsY0FBYTtBQUNoQyxTQUFTQyxlQUFlLFFBQVEsaUJBQWdCO0FBS2hELFNBQVNDLGlCQUFpQixRQUFRLCtCQUE4QjtBQUNoRSxTQUFTQyxTQUFTLFFBQVEsNkJBQTRCO0FBQ3RELFNBQVNDLGlCQUFpQixRQUFRLDhCQUE2QjtBQUMvRCxTQUFTQyx1QkFBdUIsUUFBUSwrQkFBOEI7QUFDdEUsU0FBU0Msd0JBQXdCLFFBQVEsZ0NBQStCO0FBQ3hFLFNBQVNDLFlBQVksUUFBUSxvQkFBbUI7QUFFaEQsT0FBTyxNQUFNQyxZQUFZLE9BQTZCLEVBQ3BEQyxFQUFFLEVBQ0ZDLE9BQU8sRUFDUEMsSUFBSSxFQUNKQyxFQUFF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
|
276
|
+
//# sourceMappingURL=index.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../../src/upsertRow/index.ts"],"sourcesContent":["/* eslint-disable no-param-reassign */\nimport type { TypeWithID } from 'payload/types'\n\nimport { eq } from 'drizzle-orm'\nimport { ValidationError } from 'payload/errors'\n\nimport type { BlockRowToInsert } from '../transform/write/types.js'\nimport type { Args } from './types.js'\n\nimport { buildFindManyArgs } from '../find/buildFindManyArgs.js'\nimport { transform } from '../transform/read/index.js'\nimport { transformForWrite } from '../transform/write/index.js'\nimport { deleteExistingArrayRows } from './deleteExistingArrayRows.js'\nimport { deleteExistingRowsByPath } from './deleteExistingRowsByPath.js'\nimport { insertArrays } from './insertArrays.js'\n\nexport const upsertRow = async <T extends TypeWithID>({\n id,\n adapter,\n data,\n db,\n fields,\n operation,\n path = '',\n req,\n tableName,\n upsertTarget,\n where,\n}: Args): Promise<T> => {\n // Split out the incoming data into the corresponding:\n // base row, locales, relationships, blocks, and arrays\n const rowToInsert = transformForWrite({\n adapter,\n data,\n fields,\n path,\n tableName,\n })\n\n // First, we insert the main row\n let insertedRow: Record<string, unknown>\n\n try {\n if (operation === 'update') {\n const target = upsertTarget || adapter.tables[tableName].id\n\n if (id) {\n rowToInsert.row.id = id\n ;[insertedRow] = await db\n .insert(adapter.tables[tableName])\n .values(rowToInsert.row)\n .onConflictDoUpdate({ set: rowToInsert.row, target })\n .returning()\n } else {\n ;[insertedRow] = await db\n .insert(adapter.tables[tableName])\n .values(rowToInsert.row)\n .onConflictDoUpdate({ set: rowToInsert.row, target, where })\n .returning()\n }\n } else {\n ;[insertedRow] = await db\n .insert(adapter.tables[tableName])\n .values(rowToInsert.row)\n .returning()\n }\n\n const localesToInsert: Record<string, unknown>[] = []\n const relationsToInsert: Record<string, unknown>[] = []\n const textsToInsert: Record<string, unknown>[] = []\n const numbersToInsert: Record<string, unknown>[] = []\n const blocksToInsert: { [blockType: string]: BlockRowToInsert[] } = {}\n const selectsToInsert: { [selectTableName: string]: Record<string, unknown>[] } = {}\n\n // If there are locale rows with data, add the parent and locale to each\n if (Object.keys(rowToInsert.locales).length > 0) {\n Object.entries(rowToInsert.locales).forEach(([locale, localeRow]) => {\n localeRow._parentID = insertedRow.id\n localeRow._locale = locale\n localesToInsert.push(localeRow)\n })\n }\n\n // If there are relationships, add parent to each\n if (rowToInsert.relationships.length > 0) {\n rowToInsert.relationships.forEach((relation) => {\n relation.parent = insertedRow.id\n relationsToInsert.push(relation)\n })\n }\n\n // If there are texts, add parent to each\n if (rowToInsert.texts.length > 0) {\n rowToInsert.texts.forEach((textRow) => {\n textRow.parent = insertedRow.id\n textsToInsert.push(textRow)\n })\n }\n\n // If there are numbers, add parent to each\n if (rowToInsert.numbers.length > 0) {\n rowToInsert.numbers.forEach((numberRow) => {\n numberRow.parent = insertedRow.id\n numbersToInsert.push(numberRow)\n })\n }\n\n // If there are selects, add parent to each, and then\n // store by table name and rows\n if (Object.keys(rowToInsert.selects).length > 0) {\n Object.entries(rowToInsert.selects).forEach(([selectTableName, selectRows]) => {\n selectRows.forEach((row) => {\n if (typeof row.parent === 'undefined') {\n row.parent = insertedRow.id\n }\n if (!selectsToInsert[selectTableName]) selectsToInsert[selectTableName] = []\n selectsToInsert[selectTableName].push(row)\n })\n })\n }\n\n // If there are blocks, add parent to each, and then\n // store by table name and rows\n Object.keys(rowToInsert.blocks).forEach((blockName) => {\n rowToInsert.blocks[blockName].forEach((blockRow) => {\n blockRow.row._parentID = insertedRow.id\n if (!blocksToInsert[blockName]) blocksToInsert[blockName] = []\n if (blockRow.row.uuid) {\n delete blockRow.row.uuid\n }\n blocksToInsert[blockName].push(blockRow)\n })\n })\n\n // //////////////////////////////////\n // INSERT LOCALES\n // //////////////////////////////////\n\n if (localesToInsert.length > 0) {\n const localeTable = adapter.tables[`${tableName}_locales`]\n\n if (operation === 'update') {\n await db.delete(localeTable).where(eq(localeTable._parentID, insertedRow.id))\n }\n\n await db.insert(localeTable).values(localesToInsert)\n }\n\n // //////////////////////////////////\n // INSERT RELATIONSHIPS\n // //////////////////////////////////\n\n const relationshipsTableName = `${tableName}_rels`\n\n if (operation === 'update') {\n await deleteExistingRowsByPath({\n adapter,\n db,\n localeColumnName: 'locale',\n parentColumnName: 'parent',\n parentID: insertedRow.id,\n pathColumnName: 'path',\n rows: [...relationsToInsert, ...rowToInsert.relationshipsToDelete],\n tableName: relationshipsTableName,\n })\n }\n\n if (relationsToInsert.length > 0) {\n await db.insert(adapter.tables[relationshipsTableName]).values(relationsToInsert)\n }\n\n // //////////////////////////////////\n // INSERT hasMany TEXTS\n // //////////////////////////////////\n\n const textsTableName = `${tableName}_texts`\n\n if (operation === 'update') {\n await deleteExistingRowsByPath({\n adapter,\n db,\n localeColumnName: 'locale',\n parentColumnName: 'parent',\n parentID: insertedRow.id,\n pathColumnName: 'path',\n rows: textsToInsert,\n tableName: textsTableName,\n })\n }\n\n if (textsToInsert.length > 0) {\n await db.insert(adapter.tables[textsTableName]).values(textsToInsert).returning()\n }\n\n // //////////////////////////////////\n // INSERT hasMany NUMBERS\n // //////////////////////////////////\n\n const numbersTableName = `${tableName}_numbers`\n\n if (operation === 'update') {\n await deleteExistingRowsByPath({\n adapter,\n db,\n localeColumnName: 'locale',\n parentColumnName: 'parent',\n parentID: insertedRow.id,\n pathColumnName: 'path',\n rows: numbersToInsert,\n tableName: numbersTableName,\n })\n }\n\n if (numbersToInsert.length > 0) {\n await db.insert(adapter.tables[numbersTableName]).values(numbersToInsert).returning()\n }\n\n // //////////////////////////////////\n // INSERT BLOCKS\n // //////////////////////////////////\n\n const insertedBlockRows: Record<string, Record<string, unknown>[]> = {}\n\n if (operation === 'update') {\n for (const blockName of rowToInsert.blocksToDelete) {\n const blockTableName = `${tableName}_blocks_${blockName}`\n const blockTable = adapter.tables[blockTableName]\n await db.delete(blockTable).where(eq(blockTable._parentID, insertedRow.id))\n }\n }\n\n for (const [blockName, blockRows] of Object.entries(blocksToInsert)) {\n insertedBlockRows[blockName] = await db\n .insert(adapter.tables[`${tableName}_blocks_${blockName}`])\n .values(blockRows.map(({ row }) => row))\n .returning()\n\n insertedBlockRows[blockName].forEach((row, i) => {\n blockRows[i].row = row\n })\n\n const blockLocaleIndexMap: number[] = []\n\n const blockLocaleRowsToInsert = blockRows.reduce((acc, blockRow, i) => {\n if (Object.entries(blockRow.locales).length > 0) {\n Object.entries(blockRow.locales).forEach(([blockLocale, blockLocaleData]) => {\n if (Object.keys(blockLocaleData).length > 0) {\n blockLocaleData._parentID = blockRow.row.id\n blockLocaleData._locale = blockLocale\n acc.push(blockLocaleData)\n blockLocaleIndexMap.push(i)\n }\n })\n }\n\n return acc\n }, [])\n\n if (blockLocaleRowsToInsert.length > 0) {\n await db\n .insert(adapter.tables[`${tableName}_blocks_${blockName}_locales`])\n .values(blockLocaleRowsToInsert)\n .returning()\n }\n\n await insertArrays({\n adapter,\n arrays: blockRows.map(({ arrays }) => arrays),\n db,\n parentRows: insertedBlockRows[blockName],\n })\n }\n\n // //////////////////////////////////\n // INSERT ARRAYS RECURSIVELY\n // //////////////////////////////////\n\n if (operation === 'update') {\n for (const arrayTableName of Object.keys(rowToInsert.arrays)) {\n await deleteExistingArrayRows({\n adapter,\n db,\n parentID: insertedRow.id,\n tableName: arrayTableName,\n })\n }\n }\n\n await insertArrays({\n adapter,\n arrays: [rowToInsert.arrays],\n db,\n parentRows: [insertedRow],\n })\n\n // //////////////////////////////////\n // INSERT hasMany SELECTS\n // //////////////////////////////////\n\n for (const [selectTableName, tableRows] of Object.entries(selectsToInsert)) {\n const selectTable = adapter.tables[selectTableName]\n if (operation === 'update') {\n await db.delete(selectTable).where(eq(selectTable.parent, insertedRow.id))\n }\n await db.insert(selectTable).values(tableRows).returning()\n }\n\n // //////////////////////////////////\n // Error Handling\n // //////////////////////////////////\n } catch (error) {\n throw error.code === '23505'\n ? new ValidationError(\n [\n {\n field: adapter.fieldConstraints[tableName][error.constraint],\n message: req.t('error:valueMustBeUnique'),\n },\n ],\n req.t,\n )\n : error\n }\n\n // //////////////////////////////////\n // RETRIEVE NEWLY UPDATED ROW\n // //////////////////////////////////\n\n const findManyArgs = buildFindManyArgs({\n adapter,\n depth: 0,\n fields,\n tableName,\n })\n\n findManyArgs.where = eq(adapter.tables[tableName].id, insertedRow.id)\n\n const doc = await db.query[tableName].findFirst(findManyArgs)\n\n // //////////////////////////////////\n // TRANSFORM DATA\n // //////////////////////////////////\n\n const result = transform<T>({\n config: adapter.payload.config,\n data: doc,\n fields,\n })\n\n return result\n}\n"],"names":["eq","ValidationError","buildFindManyArgs","transform","transformForWrite","deleteExistingArrayRows","deleteExistingRowsByPath","insertArrays","upsertRow","id","adapter","data","db","fields","operation","path","req","tableName","upsertTarget","where","rowToInsert","insertedRow","target","tables","row","insert","values","onConflictDoUpdate","set","returning","localesToInsert","relationsToInsert","textsToInsert","numbersToInsert","blocksToInsert","selectsToInsert","Object","keys","locales","length","entries","forEach","locale","localeRow","_parentID","_locale","push","relationships","relation","parent","texts","textRow","numbers","numberRow","selects","selectTableName","selectRows","blocks","blockName","blockRow","uuid","localeTable","delete","relationshipsTableName","localeColumnName","parentColumnName","parentID","pathColumnName","rows","relationshipsToDelete","textsTableName","numbersTableName","insertedBlockRows","blocksToDelete","blockTableName","blockTable","blockRows","map","i","blockLocaleIndexMap","blockLocaleRowsToInsert","reduce","acc","blockLocale","blockLocaleData","arrays","parentRows","arrayTableName","tableRows","selectTable","error","code","field","fieldConstraints","constraint","message","t","findManyArgs","depth","doc","query","findFirst","result","config","payload"],"mappings":"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"}
|
@@ -65,4 +65,4 @@
|
|
65
65
|
}
|
66
66
|
};
|
67
67
|
|
68
|
-
//# sourceMappingURL=
|
68
|
+
//# sourceMappingURL=insertArrays.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../../src/upsertRow/insertArrays.ts"],"sourcesContent":["/* eslint-disable no-param-reassign */\nimport type { ArrayRowToInsert } from '../transform/write/types.js'\nimport type { DrizzleDB, PostgresAdapter } from '../types.js'\n\ntype Args = {\n adapter: PostgresAdapter\n arrays: {\n [tableName: string]: ArrayRowToInsert[]\n }[]\n db: DrizzleDB\n parentRows: Record<string, unknown>[]\n}\n\ntype RowsByTable = {\n [tableName: string]: {\n arrays: {\n [tableName: string]: ArrayRowToInsert[]\n }[]\n locales: Record<string, unknown>[]\n rows: Record<string, unknown>[]\n }\n}\n\nexport const insertArrays = async ({ adapter, arrays, db, parentRows }: Args): Promise<void> => {\n // Maintain a map of flattened rows by table\n const rowsByTable: RowsByTable = {}\n\n arrays.forEach((arraysByTable, parentRowIndex) => {\n Object.entries(arraysByTable).forEach(([tableName, arrayRows]) => {\n // If the table doesn't exist in map, initialize it\n if (!rowsByTable[tableName]) {\n rowsByTable[tableName] = {\n arrays: [],\n locales: [],\n rows: [],\n }\n }\n\n const parentID = parentRows[parentRowIndex].id\n\n // Add any sub arrays that need to be created\n // We will call this recursively below\n arrayRows.forEach((arrayRow, i) => {\n if (Object.keys(arrayRow.arrays).length > 0) {\n rowsByTable[tableName].arrays.push(arrayRow.arrays)\n }\n\n // Set up parent IDs for both row and locale row\n arrayRow.row._parentID = parentID\n rowsByTable[tableName].rows.push(arrayRow.row)\n\n Object.entries(arrayRow.locales).forEach(([arrayRowLocale, arrayRowLocaleData]) => {\n arrayRowLocaleData._parentID = arrayRow.row.id\n arrayRowLocaleData._locale = arrayRowLocale\n rowsByTable[tableName].locales.push(arrayRowLocaleData)\n if (!arrayRow.row.id) {\n arrayRowLocaleData._getParentID = (rows) => rows[i].id\n }\n })\n })\n })\n })\n\n // Insert all corresponding arrays\n // (one insert per array table)\n for (const [tableName, row] of Object.entries(rowsByTable)) {\n // the nested arrays need the ID for the parentID foreign key\n let insertedRows: Args['parentRows']\n if (row.rows.length > 0) {\n insertedRows = await db.insert(adapter.tables[tableName]).values(row.rows).returning()\n }\n\n // Insert locale rows\n if (adapter.tables[`${tableName}_locales`] && row.locales.length > 0) {\n if (!row.locales[0]._parentID) {\n row.locales = row.locales.map((localeRow, i) => {\n if (typeof localeRow._getParentID === 'function') {\n localeRow._parentID = localeRow._getParentID(insertedRows)\n delete localeRow._getParentID\n }\n return localeRow\n })\n }\n await db.insert(adapter.tables[`${tableName}_locales`]).values(row.locales).returning()\n }\n\n // If there are sub arrays, call this function recursively\n if (row.arrays.length > 0) {\n await insertArrays({\n adapter,\n arrays: row.arrays,\n db,\n parentRows: insertedRows,\n })\n }\n }\n}\n"],"names":["insertArrays","adapter","arrays","db","parentRows","rowsByTable","forEach","arraysByTable","parentRowIndex","Object","entries","tableName","arrayRows","locales","rows","parentID","id","arrayRow","i","keys","length","push","row","_parentID","arrayRowLocale","arrayRowLocaleData","_locale","_getParentID","insertedRows","insert","tables","values","returning","map","localeRow"],"mappings":"AAAA,oCAAoC,GAuBpC,OAAO,MAAMA,eAAe,OAAO,EAAEC,OAAO,EAAEC,MAAM,EAAEC,EAAE,EAAEC,UAAU,EAAQ;IAC1E,4CAA4C;IAC5C,MAAMC,cAA2B,CAAC;IAElCH,OAAOI,OAAO,CAAC,CAACC,eAAeC;QAC7BC,OAAOC,OAAO,CAACH,eAAeD,OAAO,CAAC,CAAC,CAACK,WAAWC,UAAU;YAC3D,mDAAmD;YACnD,IAAI,CAACP,WAAW,CAACM,UAAU,EAAE;gBAC3BN,WAAW,CAACM,UAAU,GAAG;oBACvBT,QAAQ,EAAE;oBACVW,SAAS,EAAE;oBACXC,MAAM,EAAE;gBACV;YACF;YAEA,MAAMC,WAAWX,UAAU,CAACI,eAAe,CAACQ,EAAE;YAE9C,6CAA6C;YAC7C,sCAAsC;YACtCJ,UAAUN,OAAO,CAAC,CAACW,UAAUC;gBAC3B,IAAIT,OAAOU,IAAI,CAACF,SAASf,MAAM,EAAEkB,MAAM,GAAG,GAAG;oBAC3Cf,WAAW,CAACM,UAAU,CAACT,MAAM,CAACmB,IAAI,CAACJ,SAASf,MAAM;gBACpD;gBAEA,gDAAgD;gBAChDe,SAASK,GAAG,CAACC,SAAS,GAAGR;gBACzBV,WAAW,CAACM,UAAU,CAACG,IAAI,CAACO,IAAI,CAACJ,SAASK,GAAG;gBAE7Cb,OAAOC,OAAO,CAACO,SAASJ,OAAO,EAAEP,OAAO,CAAC,CAAC,CAACkB,gBAAgBC,mBAAmB;oBAC5EA,mBAAmBF,SAAS,GAAGN,SAASK,GAAG,CAACN,EAAE;oBAC9CS,mBAAmBC,OAAO,GAAGF;oBAC7BnB,WAAW,CAACM,UAAU,CAACE,OAAO,CAACQ,IAAI,CAACI;oBACpC,IAAI,CAACR,SAASK,GAAG,CAACN,EAAE,EAAE;wBACpBS,mBAAmBE,YAAY,GAAG,CAACb,OAASA,IAAI,CAACI,EAAE,CAACF,EAAE;oBACxD;gBACF;YACF;QACF;IACF;IAEA,kCAAkC;IAClC,+BAA+B;IAC/B,KAAK,MAAM,CAACL,WAAWW,IAAI,IAAIb,OAAOC,OAAO,CAACL,aAAc;QAC1D,6DAA6D;QAC7D,IAAIuB;QACJ,IAAIN,IAAIR,IAAI,CAACM,MAAM,GAAG,GAAG;YACvBQ,eAAe,MAAMzB,GAAG0B,MAAM,CAAC5B,QAAQ6B,MAAM,CAACnB,UAAU,EAAEoB,MAAM,CAACT,IAAIR,IAAI,EAAEkB,SAAS;QACtF;QAEA,qBAAqB;QACrB,IAAI/B,QAAQ6B,MAAM,CAAC,CAAC,EAAEnB,UAAU,QAAQ,CAAC,CAAC,IAAIW,IAAIT,OAAO,CAACO,MAAM,GAAG,GAAG;YACpE,IAAI,CAACE,IAAIT,OAAO,CAAC,EAAE,CAACU,SAAS,EAAE;gBAC7BD,IAAIT,OAAO,GAAGS,IAAIT,OAAO,CAACoB,GAAG,CAAC,CAACC,WAAWhB;oBACxC,IAAI,OAAOgB,UAAUP,YAAY,KAAK,YAAY;wBAChDO,UAAUX,SAAS,GAAGW,UAAUP,YAAY,CAACC;wBAC7C,OAAOM,UAAUP,YAAY;oBAC/B;oBACA,OAAOO;gBACT;YACF;YACA,MAAM/B,GAAG0B,MAAM,CAAC5B,QAAQ6B,MAAM,CAAC,CAAC,EAAEnB,UAAU,QAAQ,CAAC,CAAC,EAAEoB,MAAM,CAACT,IAAIT,OAAO,EAAEmB,SAAS;QACvF;QAEA,0DAA0D;QAC1D,IAAIV,IAAIpB,MAAM,CAACkB,MAAM,GAAG,GAAG;YACzB,MAAMpB,aAAa;gBACjBC;gBACAC,QAAQoB,IAAIpB,MAAM;gBAClBC;gBACAC,YAAYwB;YACd;QACF;IACF;AACF,EAAC"}
|
package/dist/upsertRow/types.js
CHANGED
@@ -1,3 +1,3 @@
|
|
1
1
|
export { };
|
2
2
|
|
3
|
-
//# sourceMappingURL=
|
3
|
+
//# sourceMappingURL=types.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../../src/upsertRow/types.ts"],"sourcesContent":["import type { SQL } from 'drizzle-orm'\nimport type { Field, PayloadRequest } from 'payload/types'\n\nimport type { DrizzleDB, GenericColumn, PostgresAdapter } from '../types.js'\n\ntype BaseArgs = {\n adapter: PostgresAdapter\n data: Record<string, unknown>\n db: DrizzleDB\n fields: Field[]\n path?: string\n tableName: string\n req: PayloadRequest\n}\n\ntype CreateArgs = BaseArgs & {\n id?: never\n operation: 'create'\n upsertTarget?: never\n where?: never\n}\n\ntype UpdateArgs = BaseArgs & {\n id?: number | string\n operation: 'update'\n upsertTarget?: GenericColumn\n where?: SQL<unknown>\n}\n\nexport type Args = CreateArgs | UpdateArgs\n"],"names":[],"mappings":"AA6BA,WAA0C"}
|
@@ -3,4 +3,4 @@ export const appendPrefixToObjectKeys = (obj, prefix)=>Object.entries(obj).reduc
|
|
3
3
|
return res;
|
4
4
|
}, {});
|
5
5
|
|
6
|
-
//# sourceMappingURL=
|
6
|
+
//# sourceMappingURL=appendPrefixToKeys.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../../src/utilities/appendPrefixToKeys.ts"],"sourcesContent":["export const appendPrefixToObjectKeys = <T>(obj: Record<string, unknown>, prefix: string): T =>\n Object.entries(obj).reduce((res, [key, val]) => {\n res[`${prefix}_${key}`] = val\n return res\n }, {} as T)\n"],"names":["appendPrefixToObjectKeys","obj","prefix","Object","entries","reduce","res","key","val"],"mappings":"AAAA,OAAO,MAAMA,2BAA2B,CAAIC,KAA8BC,SACxEC,OAAOC,OAAO,CAACH,KAAKI,MAAM,CAAC,CAACC,KAAK,CAACC,KAAKC,IAAI;QACzCF,GAAG,CAAC,CAAC,EAAEJ,OAAO,CAAC,EAAEK,IAAI,CAAC,CAAC,GAAGC;QAC1B,OAAOF;IACT,GAAG,CAAC,GAAO"}
|
@@ -26,4 +26,4 @@
|
|
26
26
|
return blocksMap;
|
27
27
|
};
|
28
28
|
|
29
|
-
//# sourceMappingURL=
|
29
|
+
//# sourceMappingURL=createBlocksMap.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../../src/utilities/createBlocksMap.ts"],"sourcesContent":["/* eslint-disable no-param-reassign */\nexport type BlocksMap = {\n [path: string]: Record<string, unknown>[]\n}\n\nexport const createBlocksMap = (data: Record<string, unknown>): BlocksMap => {\n const blocksMap: BlocksMap = {}\n\n Object.entries(data).forEach(([key, rows]) => {\n if (key.startsWith('_blocks_') && Array.isArray(rows)) {\n const blockType = key.replace('_blocks_', '')\n\n rows.forEach((row) => {\n if ('_path' in row) {\n if (!(row._path in blocksMap)) blocksMap[row._path] = []\n\n row.blockType = blockType\n blocksMap[row._path].push(row)\n\n delete row._path\n }\n })\n\n delete data[key]\n }\n })\n\n Object.entries(blocksMap).reduce((sortedBlocksMap, [path, blocks]) => {\n sortedBlocksMap[path] = blocks.sort((a, b) => {\n if (typeof a._order === 'number' && typeof b._order === 'number') {\n return a._order - b._order\n }\n\n return 0\n })\n\n return sortedBlocksMap\n }, {})\n\n return blocksMap\n}\n"],"names":["createBlocksMap","data","blocksMap","Object","entries","forEach","key","rows","startsWith","Array","isArray","blockType","replace","row","_path","push","reduce","sortedBlocksMap","path","blocks","sort","a","b","_order"],"mappings":"AAAA,oCAAoC,GAKpC,OAAO,MAAMA,kBAAkB,CAACC;IAC9B,MAAMC,YAAuB,CAAC;IAE9BC,OAAOC,OAAO,CAACH,MAAMI,OAAO,CAAC,CAAC,CAACC,KAAKC,KAAK;QACvC,IAAID,IAAIE,UAAU,CAAC,eAAeC,MAAMC,OAAO,CAACH,OAAO;YACrD,MAAMI,YAAYL,IAAIM,OAAO,CAAC,YAAY;YAE1CL,KAAKF,OAAO,CAAC,CAACQ;gBACZ,IAAI,WAAWA,KAAK;oBAClB,IAAI,CAAEA,CAAAA,IAAIC,KAAK,IAAIZ,SAAQ,GAAIA,SAAS,CAACW,IAAIC,KAAK,CAAC,GAAG,EAAE;oBAExDD,IAAIF,SAAS,GAAGA;oBAChBT,SAAS,CAACW,IAAIC,KAAK,CAAC,CAACC,IAAI,CAACF;oBAE1B,OAAOA,IAAIC,KAAK;gBAClB;YACF;YAEA,OAAOb,IAAI,CAACK,IAAI;QAClB;IACF;IAEAH,OAAOC,OAAO,CAACF,WAAWc,MAAM,CAAC,CAACC,iBAAiB,CAACC,MAAMC,OAAO;QAC/DF,eAAe,CAACC,KAAK,GAAGC,OAAOC,IAAI,CAAC,CAACC,GAAGC;YACtC,IAAI,OAAOD,EAAEE,MAAM,KAAK,YAAY,OAAOD,EAAEC,MAAM,KAAK,UAAU;gBAChE,OAAOF,EAAEE,MAAM,GAAGD,EAAEC,MAAM;YAC5B;YAEA,OAAO;QACT;QAEA,OAAON;IACT,GAAG,CAAC;IAEJ,OAAOf;AACT,EAAC"}
|
@@ -10,4 +10,4 @@ export const createMigrationTable = async (adapter)=>{
|
|
10
10
|
);`));
|
11
11
|
};
|
12
12
|
|
13
|
-
//# sourceMappingURL=
|
13
|
+
//# sourceMappingURL=createMigrationTable.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../../src/utilities/createMigrationTable.ts"],"sourcesContent":["import { sql } from 'drizzle-orm'\n\nimport type { PostgresAdapter } from '../types.js'\n\nexport const createMigrationTable = async (adapter: PostgresAdapter): Promise<void> => {\n const prependSchema = adapter.schemaName ? `\"${adapter.schemaName}\".` : ''\n\n await adapter.drizzle.execute(\n sql.raw(`CREATE TABLE IF NOT EXISTS ${prependSchema}\"payload_migrations\" (\n \"id\" serial PRIMARY KEY NOT NULL,\n \"name\" varchar,\n \"batch\" numeric,\n \"updated_at\" timestamp(3) with time zone DEFAULT now() NOT NULL,\n \"created_at\" timestamp(3) with time zone DEFAULT now() NOT NULL\n);`),\n )\n}\n"],"names":["sql","createMigrationTable","adapter","prependSchema","schemaName","drizzle","execute","raw"],"mappings":"AAAA,SAASA,GAAG,QAAQ,cAAa;AAIjC,OAAO,MAAMC,uBAAuB,OAAOC;IACzC,MAAMC,gBAAgBD,QAAQE,UAAU,GAAG,CAAC,CAAC,EAAEF,QAAQE,UAAU,CAAC,EAAE,CAAC,GAAG;IAExE,MAAMF,QAAQG,OAAO,CAACC,OAAO,CAC3BN,IAAIO,GAAG,CAAC,CAAC,2BAA2B,EAAEJ,cAAc;;;;;;EAMtD,CAAC;AAEH,EAAC"}
|