db.js 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. /* eslint-disable
  2. no-console,
  3. */
  4. // TODO: This file was created by bulk-decaffeinate.
  5. // Fix any style issues and re-enable lint.
  6. /*
  7. * decaffeinate suggestions:
  8. * DS102: Remove unnecessary code created because of implicit returns
  9. * Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md
  10. */
  11. const Sequelize = require('sequelize')
  12. const Settings = require('settings-sharelatex')
  13. const _ = require('lodash')
  14. const logger = require('logger-sharelatex')
  15. const options = _.extend({ logging: false }, Settings.mysql.clsi)
  16. logger.log({ dbPath: Settings.mysql.clsi.storage }, 'connecting to db')
  17. const sequelize = new Sequelize(
  18. Settings.mysql.clsi.database,
  19. Settings.mysql.clsi.username,
  20. Settings.mysql.clsi.password,
  21. options
  22. )
  23. if (Settings.mysql.clsi.dialect === 'sqlite') {
  24. logger.log('running PRAGMA journal_mode=WAL;')
  25. sequelize.query('PRAGMA journal_mode=WAL;')
  26. sequelize.query('PRAGMA synchronous=OFF;')
  27. sequelize.query('PRAGMA read_uncommitted = true;')
  28. }
  29. module.exports = {
  30. UrlCache: sequelize.define(
  31. 'UrlCache',
  32. {
  33. url: Sequelize.STRING,
  34. project_id: Sequelize.STRING,
  35. lastModified: Sequelize.DATE
  36. },
  37. {
  38. indexes: [{ fields: ['url', 'project_id'] }, { fields: ['project_id'] }]
  39. }
  40. ),
  41. Project: sequelize.define(
  42. 'Project',
  43. {
  44. project_id: { type: Sequelize.STRING, primaryKey: true },
  45. lastAccessed: Sequelize.DATE
  46. },
  47. {
  48. indexes: [{ fields: ['lastAccessed'] }]
  49. }
  50. ),
  51. op: Sequelize.Op,
  52. sync() {
  53. logger.log({ dbPath: Settings.mysql.clsi.storage }, 'syncing db schema')
  54. return sequelize
  55. .sync()
  56. .then(() => logger.log('db sync complete'))
  57. .catch((err) => console.log(err, 'error syncing'))
  58. }
  59. }