91 lines
2.3 KiB
JavaScript
91 lines
2.3 KiB
JavaScript
class UserNotFound extends Error {
|
|
constructor(message = "User not found.") {
|
|
super(message);
|
|
this.name = "UserNotFound";
|
|
this.statusCode = 404;
|
|
}
|
|
|
|
// TODO log missing user
|
|
}
|
|
|
|
class WineNotFound extends Error {
|
|
constructor(message = "Wine not found.") {
|
|
super(message);
|
|
this.name = "WineNotFound";
|
|
this.statusCode = 404;
|
|
}
|
|
|
|
// TODO log missing user
|
|
}
|
|
|
|
class WinnerNotFound extends Error {
|
|
constructor(message = "Winner not found.") {
|
|
super(message);
|
|
this.name = "WinnerNotFound";
|
|
this.statusCode = 404;
|
|
}
|
|
|
|
// TODO log missing user
|
|
}
|
|
|
|
class WinnersTimelimitExpired extends Error {
|
|
constructor(message = "Timelimit expired, you will need to wait until it's your turn again.") {
|
|
super(message);
|
|
this.name = "WinnersTimelimitExpired";
|
|
this.statusCode = 403;
|
|
}
|
|
}
|
|
|
|
class WineSelectionWinnerNotNextInLine extends Error {
|
|
constructor(message = "Not the winner next in line!") {
|
|
super(message);
|
|
this.name = "WineSelectionWinnerNotNextInLine";
|
|
this.statusCode = 403;
|
|
}
|
|
|
|
// TODO log missing user
|
|
}
|
|
|
|
class NoMoreAttendeesToWin extends Error {
|
|
constructor(message = "No more attendees left to drawn from.") {
|
|
super(message);
|
|
this.name = "NoMoreAttendeesToWin";
|
|
this.statusCode = 404;
|
|
}
|
|
}
|
|
|
|
class CouldNotFindNewWinnerAfterNTries extends Error {
|
|
constructor(tries) {
|
|
let message = `Could not a new winner after ${tries} tries.`;
|
|
super(message);
|
|
this.name = "CouldNotFindNewWinnerAfterNTries";
|
|
this.statusCode = 404;
|
|
}
|
|
}
|
|
|
|
class LotteryByDateNotFound extends Error {
|
|
constructor(date) {
|
|
const ye = new Intl.DateTimeFormat("en", { year: "numeric" }).format(date);
|
|
const mo = new Intl.DateTimeFormat("en", { month: "2-digit" }).format(date);
|
|
const da = new Intl.DateTimeFormat("en", { day: "2-digit" }).format(date);
|
|
|
|
const dateString = `${ye}-${mo}-${da}`;
|
|
const dateUnix = date.getTime();
|
|
const message = `Could not find lottery for date: ${dateString}.`;
|
|
super(message);
|
|
this.name = "LotteryByDateNotFoundError";
|
|
this.statusCode = 404;
|
|
}
|
|
}
|
|
|
|
module.exports = {
|
|
UserNotFound,
|
|
WineNotFound,
|
|
WinnerNotFound,
|
|
WinnersTimelimitExpired,
|
|
WineSelectionWinnerNotNextInLine,
|
|
NoMoreAttendeesToWin,
|
|
CouldNotFindNewWinnerAfterNTries,
|
|
LotteryByDateNotFound
|
|
};
|