@webiny/api-headless-cms-ddb
Version:
DynamoDB storage operations plugin for Headless CMS API.
94 lines (92 loc) • 2.12 kB
JavaScript
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.createSystemStorageOperations = void 0;
var _error = _interopRequireDefault(require("@webiny/error"));
var _get = require("@webiny/db-dynamodb/utils/get");
var _dbDynamodb = require("@webiny/db-dynamodb");
const createPartitionKey = ({
tenant
}) => {
return `T#${tenant.toLowerCase()}#SYSTEM`;
};
const createSortKey = () => {
return "CMS";
};
const createKeys = params => {
return {
PK: createPartitionKey(params),
SK: createSortKey()
};
};
const createSystemStorageOperations = params => {
const {
entity
} = params;
const create = async ({
system
}) => {
const keys = createKeys(system);
try {
await (0, _dbDynamodb.put)({
entity,
item: {
...system,
...keys
}
});
return system;
} catch (ex) {
throw new _error.default(ex.message || "Could not create system.", ex.code || "CREATE_SYSTEM_ERROR", {
error: ex,
system,
keys
});
}
};
const update = async params => {
const {
system
} = params;
const keys = createKeys(system);
try {
await (0, _dbDynamodb.put)({
entity,
item: {
...system,
...keys
}
});
return system;
} catch (ex) {
throw new _error.default(ex.message || "Could not update system.", ex.code || "UPDATE_SYSTEM_ERROR", {
error: ex,
system,
keys
});
}
};
const get = async params => {
const keys = createKeys(params);
try {
return await (0, _get.getClean)({
entity,
keys
});
} catch (ex) {
throw new _error.default(ex.message || "Could not get system.", ex.code || "GET_SYSTEM_ERROR", {
error: ex,
keys
});
}
};
return {
create,
update,
get
};
};
exports.createSystemStorageOperations = createSystemStorageOperations;
//# sourceMappingURL=index.js.map
;