main.js 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. #!/bin/node
  2. const CONFIG = require('./src/config.js');
  3. const path = require('path');
  4. const fs = require('fs');
  5. const Router = require('node-simple-router');
  6. const http = require('http');
  7. const Security = require('./src/security.js');
  8. const RouterUtils = require('./src/routerUtils.js').RouterUtils;
  9. const UPDATE_INTERVAL = 1800000; // 30 min
  10. function App() {
  11. this.router = new Router({ static_route: __dirname+"/static/" });
  12. this.routerUtils = new RouterUtils(this);
  13. this.databaseHelper = require('craftlabhttpserver/src/databaseHelper').DatabaseHelper;
  14. this.libraryManager = require('./src/libraryManager.js').LibraryManager;
  15. this.server = null;
  16. }
  17. App.prototype.init = async function() {
  18. [
  19. "./router/bootstrap.js",
  20. "./router/api.js",
  21. "./router/index.js"
  22. ].forEach(i => require(i).register(this));
  23. await this.databaseHelper.init([
  24. require('./model/session.js').SessionModel,
  25. require('./model/mediaItem.js').MediaFileModel,
  26. require('./model/mediaItemMeta.js').MediaFileMetaModel,
  27. require('./model/mediaItemTag.js').MediaFileTagModel,
  28. require('./model/access.js').AccessModel,
  29. require('./model/autotag.js').AutotagModel,
  30. require('./model/configModel.js').ConfigModel
  31. ]);
  32. }
  33. App.prototype.run = async function() {
  34. this.server = http.createServer(this.router).listen(CONFIG.port);
  35. await this.libraryManager.updateLibraries(this);
  36. setInterval(async () => {
  37. await this.libraryManager.updateLibraries(this);
  38. }, UPDATE_INTERVAL);
  39. }
  40. console.info = () => {};
  41. let app = new App();
  42. app.init().then(() => app.run());