accountSchema.js 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. 'use strict';
  2. const async = require("async");
  3. const coreClass = require("../core");
  4. const config = require('config');
  5. module.exports = class extends coreClass {
  6. constructor(name, moduleManager) {
  7. super(name, moduleManager);
  8. this.dependsOn = ["mongo"];
  9. }
  10. initialize() {
  11. return new Promise(async (resolve, reject) => {
  12. this.setStage(1);
  13. this.mongoModule = this.moduleManager.modules["mongo"];
  14. this.accountSchemaSchema = await this.mongoModule.schema("accountSchema");
  15. this.accountSchemaModel = await this.mongoModule.model("accountSchema");
  16. resolve();
  17. })
  18. }
  19. async getLatest() {
  20. return new Promise(async (resolve, reject) => {
  21. try { await this._validateHook(); } catch { return; }
  22. this.accountSchemaModel.find({}, null, { sort: "-version", limit: 1 }, (err, schemas) => {
  23. if (err || !schemas || schemas.length !== 1) reject(new Error("Something went wrong."))
  24. else resolve(schemas[0]);
  25. });
  26. });
  27. }
  28. async getAllVersions() {
  29. return new Promise(async (resolve, reject) => {
  30. try { await this._validateHook(); } catch { return; }
  31. this.accountSchemaModel.find({}, null, { sort: "-version" }, (err, schemas) => {
  32. if (err || !schemas) reject(new Error("Something went wrong."))
  33. else resolve(schemas.map(schema => schema.version));
  34. });
  35. });
  36. }
  37. async getAll() {
  38. return new Promise(async (resolve, reject) => {
  39. try { await this._validateHook(); } catch { return; }
  40. this.accountSchemaModel.find({}, null, { sort: "-version" }, (err, schemas) => {
  41. if (err || !schemas) reject(new Error("Something went wrong."))
  42. else resolve(schemas)
  43. });
  44. });
  45. }
  46. async getById(schemaId) {
  47. return new Promise(async (resolve, reject) => {
  48. try { await this._validateHook(); } catch { return; }
  49. this.accountSchemaModel.findById(schemaId, (err, schema) => {
  50. if (err || !schema) reject(new Error("Something went wrong."))
  51. else resolve(schema)
  52. });
  53. });
  54. }
  55. async removeById(schemaId) {
  56. return new Promise(async (resolve, reject) => {
  57. try { await this._validateHook(); } catch { return; }
  58. this.accountSchemaModel.deleteOne({ _id: schemaId }, (err, res) => {
  59. if (err) reject(new Error("Something went wrong."));
  60. else if (res.deletedCount !== 1) reject(new Error("Nothing was removed."));
  61. else resolve();
  62. });
  63. });
  64. }
  65. async getByVersion(version) {
  66. return new Promise(async (resolve, reject) => {
  67. try { await this._validateHook(); } catch { return; }
  68. this.accountSchemaModel.findOne({ version }, (err, schema) => {
  69. if (err || !schema) reject(new Error("Something went wrong."))
  70. else resolve(schema)
  71. });
  72. });
  73. }
  74. async import(name) {
  75. return new Promise(async (resolve, reject) => {
  76. try { await this._validateHook(); } catch { return; }
  77. let schema = require(`../schemas/${name}`);
  78. this.accountSchemaModel.create(schema, (err) => {
  79. if (err) reject(new Error(err.message))
  80. else resolve();
  81. });
  82. });
  83. }
  84. }