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