UNPKG

@avonjs/avonjs

Version:

A fluent Node.js API generator.

69 lines (68 loc) 1.92 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const joi_1 = __importDefault(require("joi")); const luxon_1 = require("luxon"); const Field_1 = __importDefault(require("./Field")); const DateTimeFilter_1 = __importDefault(require("./Filters/DateTimeFilter")); class DateTime extends Field_1.default { /** * The validation rules callback for creation and updates. */ rulesSchema = joi_1.default.date(); /** * The validation rules callback for creation. */ creationRulesSchema = joi_1.default.date(); /** * The validation rules callback for updates. */ updateRulesSchema = joi_1.default.date(); /** * Indicates the date store / retrieve format. */ dateFormat = 'yyyy-mm-dd HH:mm:ss'; constructor(attribute, resolveCallback) { super(attribute, resolveCallback); this.default(() => { return this.isNullable() ? this.nullValue() : luxon_1.DateTime.now().toFormat(this.dateFormat); }); } /** * Mutate the field value for response. */ getMutatedValue(request, value) { return luxon_1.DateTime.fromJSDate(new Date(value)).toFormat(this.dateFormat); } /** * Determine field is filterable or not. */ isFilterable() { return true; } /** * Determine field is orderable or not. */ isOrderable() { return true; } /** * Make the field filter. */ makeFilter(request) { return new DateTimeFilter_1.default(this); } /** * * Specify store / retrieve date format. */ format(dateFormat) { this.dateFormat = dateFormat; return this; } } exports.default = DateTime;