nestjs-appwrite
Version:
Easier Appwrite integration for your NestJS application.
32 lines (27 loc) • 848 B
text/typescript
import 'reflect-metadata';
import typeMetadataStorage from '../../storage/type-metadata.storage';
import { determineRequiredValue, PropOptions } from './prop.options';
const DEFAULT_MIN = Number.MIN_SAFE_INTEGER;
const DEFAULT_MAX = Number.MAX_SAFE_INTEGER;
export type IntegerPropOptions = PropOptions<number> & {
isInt?: boolean;
min?: number;
max?: number;
};
export function IntegerProp(options: IntegerPropOptions = {}): PropertyDecorator {
return (target, propertyKey) => {
const propKey = propertyKey.toString();
typeMetadataStorage.addPropertyMetadata(
target.constructor,
propKey,
{
...options,
required: determineRequiredValue(options),
type: Number,
isInt: true,
min: options.min ?? DEFAULT_MIN,
max: options.max ?? DEFAULT_MAX,
}
);
};
}