UNPKG

dynamodb-toolbox

Version:

Lightweight and type-safe query builder for DynamoDB and TypeScript.

52 lines (51 loc) 1.71 kB
import { any } from '../../../../schema/any/index.js'; import { jsonStringify } from '../../../../transformers/jsonStringify.js'; import { pipe } from '../../../../transformers/pipe.js'; import { fromTransformerDTO } from './transformer.js'; /** * @debt feature "handle transforms, defaults, links & validators" */ export const fromAnySchemaDTO = ({ keyDefault, putDefault, updateDefault, keyLink, putLink, updateLink, transform, ...dto }) => { keyDefault; putDefault; updateDefault; keyLink; putLink; updateLink; transform; let schema = any(dto); if (transform !== undefined) { const transformer = fromAnySchemaTransformerDTO(transform); if (transformer !== null) { schema = schema.transform(transformer); } } return schema; }; const fromAnySchemaTransformerDTO = (transformerDTO) => { try { switch (transformerDTO.transformerId) { case 'custom': return null; case 'jsonStringify': { const { space } = transformerDTO; return jsonStringify({ space }); } case 'pipe': { const { transformers: transformerDTOs } = transformerDTO; const transformers = []; for (const transformerDTO of transformerDTOs) { const transformer = fromTransformerDTO(transformerDTO); if (transformer === null) { return null; } transformers.push(transformer); } return pipe(...transformers); } } } catch { return null; } };