UNPKG

@webiny/api-headless-cms-ddb

Version:

DynamoDB storage operations plugin for Headless CMS API.

62 lines (60 loc) 1.8 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default; Object.defineProperty(exports, "__esModule", { value: true }); exports.createGetRevisionById = void 0; var _dataloader = _interopRequireDefault(require("dataloader")); var _dbDynamodb = require("@webiny/db-dynamodb"); var _cleanup = require("@webiny/db-dynamodb/utils/cleanup"); var _keys = require("../keys"); var _utils = require("@webiny/utils"); var _createBatchScheduleFn = require("./createBatchScheduleFn"); const createGetRevisionById = params => { const { entity, locale, tenant } = params; return new _dataloader.default(async ids => { const queries = ids.reduce((collection, id) => { const partitionKey = (0, _keys.createPartitionKey)({ tenant, locale, id }); const { version } = (0, _utils.parseIdentifier)(id); if (version === null) { return collection; } const sortKey = (0, _keys.createRevisionSortKey)({ version }); const keys = `${partitionKey}__${sortKey}`; if (collection[keys]) { return collection; } collection[keys] = entity.getBatch({ PK: partitionKey, SK: sortKey }); return collection; }, {}); const records = await (0, _dbDynamodb.batchReadAll)({ table: entity.table, items: Object.values(queries) }); const items = (0, _cleanup.cleanupItems)(entity, records); return ids.map(id => { return items.filter(item => { return id === item.id; }); }); }, { batchScheduleFn: (0, _createBatchScheduleFn.createBatchScheduleFn)() }); }; exports.createGetRevisionById = createGetRevisionById; //# sourceMappingURL=getRevisionById.js.map