2021-05-10 15:36:09 +02:00
|
|
|
'use strict';
|
|
|
|
|
2021-10-20 17:30:05 +02:00
|
|
|
/* DatabaseError */
|
|
|
|
class DatabaseError extends Error {
|
|
|
|
constructor(message, details = {}) {
|
|
|
|
super();
|
|
|
|
this.name = 'DatabaseError';
|
|
|
|
this.message = message || 'A database error occured';
|
|
|
|
this.details = details;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
class NotNullConstraint extends DatabaseError {
|
2021-06-24 18:28:36 +02:00
|
|
|
constructor({ column = '' } = {}) {
|
|
|
|
super();
|
|
|
|
this.name = 'NotNullConstraint';
|
2021-10-20 17:30:05 +02:00
|
|
|
this.message = `Not null constraint violation${column ? ` on column ${column}` : ''}.`;
|
|
|
|
this.details = { column };
|
2021-07-29 16:39:26 +02:00
|
|
|
this.stack = '';
|
2021-05-10 15:36:09 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2021-10-20 17:30:05 +02:00
|
|
|
class InvalidTimeError extends DatabaseError {
|
|
|
|
constructor(message) {
|
|
|
|
super();
|
|
|
|
this.name = 'InvalidTimeFormat';
|
|
|
|
this.message = message || 'Invalid time format, expected HH:mm:ss.SSS';
|
|
|
|
this.details = {};
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
class InvalidDateError extends DatabaseError {
|
|
|
|
constructor(message) {
|
|
|
|
super();
|
|
|
|
this.name = 'InvalidTimeFormat';
|
|
|
|
this.message = message || 'Invalid date format, expected YYYY-MM-DD';
|
|
|
|
this.details = {};
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
class InvalidDateTimeError extends DatabaseError {
|
|
|
|
constructor(message) {
|
|
|
|
super();
|
|
|
|
this.name = 'InvalidTimeFormat';
|
|
|
|
this.message = message || 'Invalid datetime format, expected a timestamp or an ISO date';
|
|
|
|
this.details = {};
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2021-05-10 15:36:09 +02:00
|
|
|
module.exports = {
|
2021-10-20 17:30:05 +02:00
|
|
|
DatabaseError,
|
2021-06-24 18:28:36 +02:00
|
|
|
NotNullConstraint,
|
2021-10-20 17:30:05 +02:00
|
|
|
InvalidTimeError,
|
|
|
|
InvalidDateError,
|
|
|
|
InvalidDateTimeError,
|
2021-05-10 15:36:09 +02:00
|
|
|
};
|