@avonjs/avonjs
Version:
A fluent Node.js API generator.
69 lines (68 loc) • 1.92 kB
JavaScript
;
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;