Advertisement
Guest User

db.ts

a guest
Nov 14th, 2022
440
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.68 KB | Source Code | 0 0
  1. import { connect } from "mongoose";
  2. import chalk from "chalk";
  3. import fs from "fs";
  4. import path from "path";
  5. import { eError, tError, rError, sError, rfError } from "../handlers/throw";
  6. import settings from "../handlers/settings"
  7. const uri = process.env.uridb!;
  8. const log = console.log;
  9.  
  10. export default async () => {
  11. console.log("\n");
  12.  
  13. log(chalk.green(`${settings.line}`));
  14. log(chalk.blue("[INFO]: Loading Mondodb...."));
  15. log(chalk.green(`${settings.line}`));
  16.  
  17. try {
  18. const options = {
  19. autoIndex: false, // Don't build indexes
  20. maxPoolSize: 10, // Maintain up to 10 socket connections
  21. serverSelectionTimeoutMS: 5000, // Keep trying to send operations for 5 seconds
  22. socketTimeoutMS: 45000, // Close sockets after 45 seconds of inactivity
  23. family: 4 // Use IPv4, skip trying IPv6
  24. };
  25. await connect(uri, options).then(() => {
  26. log(chalk.green(`${settings.line}`));
  27. log(chalk.blue("[INFO]: Ready MongoDB ✅"));
  28. log(chalk.green(`${settings.line}`));
  29. }).catch((e) => {
  30. console.log(e);
  31. })
  32. } catch (e) {
  33. console.log(e);
  34. }
  35.  
  36. console.log("\n");
  37.  
  38. log(chalk.blue("[INFO]: Loading models...."));
  39.  
  40.  
  41. let modelsDir: any = [];
  42.  
  43. function loadDirModels(dir: string = "./models/") {
  44.  
  45. let last = dir.charAt(dir.length - 1);
  46.  
  47. if (!(last == "/" || last == "\\")) {
  48. dir = dir + "/";
  49. }
  50.  
  51. let folder;
  52. try { folder = fs.readdirSync(path.resolve(__dirname, dir)); } catch (e) { return tError("Models folder/files not found"); }
  53.  
  54. for (let i = 0; i < folder.length; i++) {
  55. let file = folder[i];
  56. let fileread = fs.readdirSync(path.resolve(__dirname, dir + file))[0];
  57. modelsDir.push(dir + file + "/" + fileread);
  58. }
  59. }
  60.  
  61. loadDirModels("./models/");
  62.  
  63. (async function() {
  64. for (let i = 0; i < modelsDir.length; i++) {
  65. let Model = modelsDir[i];
  66. let modelName = Model.split("/")[2].split(".")[0];
  67. log(chalk.blue("[DB]: Listen to Model: ", modelName));
  68. let model = await require(Model);
  69. await model.watch().on("change", (data: any) => {
  70. let operationtype = data.operationType;
  71. if (operationtype === "insert") {
  72. log(chalk.blue("[DB]: Data Added"));
  73. } else if (operationtype === "update") {
  74. log(chalk.blue("[DB]: Data Updated"));
  75. } else if (operationtype === "delete") {
  76. log(chalk.blue("[DB]: Data Deleted"));
  77. } else if (operationtype === "replace") {
  78. log(chalk.blue("[DB]: Data Replaced"));
  79. } else if (operationtype === "invalidate") {
  80. log(chalk.blue("[DB]: Data Invalidated"));
  81. }
  82. });
  83. }
  84. })();
  85. };
  86.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement