02-db.ts 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. /* Import modules. */
  2. import moment from 'moment'
  3. import initFusions from '../../handlers/initFusions.ts'
  4. console.info('Initializing Ephemeral Database Manager...')
  5. /* Initialize locals. */
  6. let status
  7. /* Initialize DB handlers. */
  8. let fusionsDb
  9. let profilesDb
  10. let systemDb
  11. /**
  12. * CashFusions Datastore
  13. *
  14. * An collection of fusion details.
  15. */
  16. fusionsDb = {}
  17. /**
  18. * Profiles Datastore
  19. *
  20. * An collection of profiles (public keys).
  21. */
  22. profilesDb = {}
  23. /**
  24. * Sessions Datastore
  25. *
  26. * An collection of sessions.
  27. */
  28. // sessionsDb = {}
  29. /**
  30. * System Datastore
  31. *
  32. * A system management object.
  33. */
  34. systemDb = {}
  35. /**
  36. * Put (Data)
  37. */
  38. const put = async (_dbname, _key, _value) => {
  39. try {
  40. switch(_dbname) {
  41. case 'fusions':
  42. fusionsDb[_key] = _value
  43. break
  44. case 'profiles':
  45. profilesDb[_key] = _value
  46. break
  47. // case 'sessions':
  48. // sessionsDb[_key] = _value
  49. // break
  50. case 'system':
  51. systemDb[_key] = _value
  52. break
  53. }
  54. } catch (err) {
  55. console.error(err)
  56. return err
  57. }
  58. /* Return status. */
  59. return `[ ${_dbname} ] data saved successfully!`
  60. }
  61. /**
  62. * Initialize
  63. */
  64. const init = async () => {
  65. /* Validate (initial) data. */
  66. if (Object.keys(systemDb).length === 0) {
  67. status = {
  68. createdAt: moment().unix(),
  69. updatedAt: moment().unix(),
  70. },
  71. put('system', 'status', status)
  72. .catch(err => console.error(err))
  73. } else {
  74. /* Set status. */
  75. status = systemDb.status
  76. /* Update timestamp. */
  77. status.updatedAt = moment().unix()
  78. /* Save data to store. */
  79. put('system', 'status', status)
  80. .catch(err => console.error(err))
  81. }
  82. // console.log('SYSTEM (DB) STATUS', systemDb.status)
  83. }
  84. init()
  85. initFusions(fusionsDb)
  86. export default defineEventHandler((event) => {
  87. // console.log('Ephemeral Db Request: ' + getRequestURL(event))
  88. /* Inject database into server context. */
  89. event.context.Db = {
  90. /* Getters */
  91. fusions: fusionsDb,
  92. profiles: profilesDb,
  93. system: systemDb,
  94. /* Setters */
  95. put,
  96. }
  97. })