UNPKG

@cyber-rom/nestjs-scylladb

Version:

Based on https://www.npmjs.com/package/@ouato/nestjs-express-cassandra With support columns name mapping

46 lines (41 loc) 1.31 kB
import {Type} from '@nestjs/common'; import {FindQuery} from '../interfaces'; import {getColumnsMapper} from './decorator.utils'; export function transformKey<T>(target: Type<T>, key?: String | keyof T): any { if (!target || !(target && typeof target === 'function') || !key) { return key; } const mapper = getColumnsMapper(new target()); if (!mapper) { return key; } return mapper[key] || key; } export function transformQuerySelect<T>(target: Type<T>, select?: Array<String | keyof T>): any { if (!target || !(target && typeof target === 'function') || !select) { return select; } const mapper = getColumnsMapper(new target()); if (!mapper) { return select; } return select.map((key) => mapper[key] || key); } export function transformQuery<T>(target: Type<T>, query?: FindQuery<T>): any { if (!target || !(target && typeof target === 'function') || !query) { return query; } const mapper = getColumnsMapper(new target()); if (!mapper) { return query; } for (const key of Object.keys(query)) { const column = mapper[key] || key; if (column === key) { continue; } query[column] = query[key]; delete query[key]; } return query; }