wallet.post.ts 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. /* Import modules. */
  2. import moment from 'moment'
  3. import PouchDB from 'pouchdb'
  4. import { v4 as uuidv4 } from 'uuid'
  5. /* Initialize databases. */
  6. const walletDb = new PouchDB(`http://${process.env.COUCHDB_USER}:${process.env.COUCHDB_PASSWORD}@127.0.0.1:5984/wallet`)
  7. /**
  8. * Create Session
  9. *
  10. * @returns session
  11. */
  12. const createSession = async (_event) => {
  13. /* Set headers. */
  14. const headers = _event.node.req.headers
  15. // console.log('HEADERS', headers)
  16. /* Build log details. */
  17. const logDetails = {
  18. i18n: headers['accept-language'],
  19. client: headers['user-agent'],
  20. referer: headers['referer'],
  21. host: headers['host'],
  22. ip: headers['x-real-ip'],
  23. ip_fwd: headers['x-forwarded-for'],
  24. url: _event.node.req.url,
  25. }
  26. // console.info('LOG (api):', logDetails)
  27. /* Create (new) session. */
  28. const session = {
  29. _id: uuidv4(),
  30. ...logDetails,
  31. isActive: true,
  32. createdAt: moment().unix(),
  33. }
  34. /* Save session to database. */
  35. const success = await walletDb
  36. .put(session)
  37. .catch(err => console.error(err))
  38. console.log('SUCCESS', success)
  39. /* Return session. */
  40. return session
  41. }
  42. export default defineEventHandler(async (event) => {
  43. /* Set (request) body. */
  44. const body = await readBody(event)
  45. console.log('WALLET.POST (body):', body)
  46. /* Initialize locals. */
  47. let response
  48. let wallet
  49. /* Request session (if available). */
  50. response = await walletDb
  51. .allDocs({
  52. include_docs: true,
  53. })
  54. .catch(err => console.error(err))
  55. console.log('RESPONSE (wallet):', response)
  56. if (response?.rows.length > 0) {
  57. wallet = response.rows.map(_entry => {
  58. const newDoc = {
  59. id: _entry.doc._id,
  60. ..._entry.doc,
  61. }
  62. delete newDoc._id
  63. delete newDoc._rev
  64. return newDoc
  65. })
  66. }
  67. /* Return session. */
  68. return wallet
  69. })