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
JavaScript
;
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;