dynamodb-toolbox
Version:
Lightweight and type-safe query builder for DynamoDB and TypeScript.
56 lines (55 loc) • 1.96 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.fromAnySchemaDTO = void 0;
const index_js_1 = require("../../../../schema/any/index.js");
const jsonStringify_js_1 = require("../../../../transformers/jsonStringify.js");
const pipe_js_1 = require("../../../../transformers/pipe.js");
const transformer_js_1 = require("./transformer.js");
/**
* @debt feature "handle transforms, defaults, links & validators"
*/
const fromAnySchemaDTO = ({ keyDefault, putDefault, updateDefault, keyLink, putLink, updateLink, transform, ...dto }) => {
keyDefault;
putDefault;
updateDefault;
keyLink;
putLink;
updateLink;
transform;
let schema = (0, index_js_1.any)(dto);
if (transform !== undefined) {
const transformer = fromAnySchemaTransformerDTO(transform);
if (transformer !== null) {
schema = schema.transform(transformer);
}
}
return schema;
};
exports.fromAnySchemaDTO = fromAnySchemaDTO;
const fromAnySchemaTransformerDTO = (transformerDTO) => {
try {
switch (transformerDTO.transformerId) {
case 'custom':
return null;
case 'jsonStringify': {
const { space } = transformerDTO;
return (0, jsonStringify_js_1.jsonStringify)({ space });
}
case 'pipe': {
const { transformers: transformerDTOs } = transformerDTO;
const transformers = [];
for (const transformerDTO of transformerDTOs) {
const transformer = (0, transformer_js_1.fromTransformerDTO)(transformerDTO);
if (transformer === null) {
return null;
}
transformers.push(transformer);
}
return (0, pipe_js_1.pipe)(...transformers);
}
}
}
catch {
return null;
}
};