48 lines
895 B
TypeScript
48 lines
895 B
TypeScript
|
import { Op } from 'sequelize';
|
||
|
import moment, { MomentInput } from 'moment';
|
||
|
function stringToDate(value: string): Date {
|
||
|
return moment(value).toDate();
|
||
|
}
|
||
|
|
||
|
function getNextDay(value: MomentInput): Date {
|
||
|
return moment(value).add(1, 'd').toDate();
|
||
|
}
|
||
|
|
||
|
export default {
|
||
|
$dateOn(value) {
|
||
|
return {
|
||
|
[Op.and]: [
|
||
|
{ [Op.gte]: stringToDate(value) },
|
||
|
{ [Op.lt]: getNextDay(value) },
|
||
|
],
|
||
|
};
|
||
|
},
|
||
|
|
||
|
$dateNotOn(value) {
|
||
|
return {
|
||
|
[Op.or]: [
|
||
|
{ [Op.lt]: stringToDate(value) },
|
||
|
{ [Op.gte]: getNextDay(value) },
|
||
|
],
|
||
|
};
|
||
|
},
|
||
|
|
||
|
$dateBefore(value) {
|
||
|
return { [Op.lt]: stringToDate(value) };
|
||
|
},
|
||
|
|
||
|
$dateNotBefore(value) {
|
||
|
return {
|
||
|
[Op.gte]: stringToDate(value),
|
||
|
};
|
||
|
},
|
||
|
|
||
|
$dateAfter(value) {
|
||
|
return { [Op.gte]: getNextDay(value) };
|
||
|
},
|
||
|
|
||
|
$dateNotAfter(value) {
|
||
|
return { [Op.lt]: getNextDay(value) };
|
||
|
},
|
||
|
};
|