UNPKG

ddd-tool-kit

Version:

A development tool kit for using Domain Driven Design in your Web API Node.js

41 lines (40 loc) 1.42 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.DateValueObject = void 0; const date_fns_1 = require("date-fns"); const date_errors_1 = require("./date.errors"); const output_util_1 = require("../../../utils/output/output.util"); const value_object_abstract_1 = require("../../../abstract/value-object/value-object.abstract"); class DateValueObject extends value_object_abstract_1.ValueObject { addDays(days) { this.props.value = (0, date_fns_1.addDays)(this.value, days); } differenceInDays(date) { return (0, date_fns_1.differenceInDays)(this.value, date.value); } isSameDay(date) { return (0, date_fns_1.isSameDay)(this.value, date.value); } sanitizeProps() { this.props.value = (0, date_fns_1.toDate)(this.value); } isValidProps() { const numberDate = this.value; const isValidDate = !isNaN(numberDate); return isValidDate; } static getDefault() { return this.init({ value: new Date(), }).result; } static init(props) { const date = new DateValueObject(props); const isInvalidProps = !date.isValidProps(); if (isInvalidProps) { return output_util_1.Output.fail(date_errors_1.INVALID_DATE); } return output_util_1.Output.success(date); } } exports.DateValueObject = DateValueObject;