database.js 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. import Datastore from "@seald-io/nedb";
  2. import path from 'node:path';
  3. import { fileURLToPath } from 'node:url';
  4. const __filename = fileURLToPath(import.meta.url);
  5. const __dirname = path.dirname(__filename);
  6. export default class DB {
  7. constructor(dbName) {
  8. this.dbName = dbName;
  9. }
  10. init() {
  11. this.database = {
  12. users: new Datastore({
  13. filename: path.join(__dirname, this.dbName.toLowerCase()+'.db'),
  14. autoload: true
  15. })
  16. };
  17. }
  18. async count(name) {
  19. // Return the count as a Promise to align with typical async patterns
  20. // If your collection API uses callbacks, you can adapt accordingly.
  21. const collection = this.database[name];
  22. return collection.count();
  23. }
  24. async get(name) {
  25. return this.database[name].find({});
  26. }
  27. async add(name, doc) {
  28. return this.database[name].insert(doc);
  29. }
  30. async remove(name, id) {
  31. return this.database[name].remove({ _id: id });
  32. }
  33. async find(name, query) {
  34. return this.database[name].findOne(query);
  35. }
  36. }