import typeMetadataStorage from '../../storage/type-metadata.storage';
import { determineRequiredValue, PropOptions } from './prop.options';

export type DateTimePropOptions = PropOptions<Date> & {
  isArray?: boolean;
};

export function DateTimeProp(options: DateTimePropOptions = {}): PropertyDecorator {
  return (target, propertyKey) => {
    const propKey = propertyKey.toString();

    typeMetadataStorage.addPropertyMetadata(
      target.constructor,
      propKey,
      {
        ...options,
        required: determineRequiredValue(options),
        type: Date,
      }
    );
  };
}
