initial commit
[squeep-indie-auther] / src / db / errors.js
diff --git a/src/db/errors.js b/src/db/errors.js
new file mode 100644 (file)
index 0000000..cd43239
--- /dev/null
@@ -0,0 +1,56 @@
+'use strict';
+
+class DatabaseError extends Error {
+  constructor(...args) {
+    super(...args);
+    Error.captureStackTrace(DatabaseError);
+  }
+
+  get name() {
+    /* istanbul ignore next */
+    return this.constructor.name;
+  }
+}
+
+class DataValidation extends DatabaseError {
+  constructor(...args) {
+    super(...args);
+    Error.captureStackTrace(DataValidation);
+  }
+}
+
+class NotImplemented extends DatabaseError {
+  constructor(...args) {
+    super(...args);
+    Error.captureStackTrace(NotImplemented);
+  }
+}
+
+class UnexpectedResult extends DatabaseError {
+  constructor(...args) {
+    super(...args);
+    Error.captureStackTrace(UnexpectedResult);
+  }
+}
+
+class UnsupportedEngine extends DatabaseError {
+  constructor(...args) {
+    super(...args);
+    Error.captureStackTrace(UnsupportedEngine);
+  }
+}
+
+class MigrationNeeded extends DatabaseError {
+  constructor(...args) {
+    super(...args);
+  }
+}
+
+module.exports = {
+  DatabaseError,
+  DataValidation,
+  MigrationNeeded,
+  NotImplemented,
+  UnexpectedResult,
+  UnsupportedEngine,
+};