promo.post.ts 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. /* Import modules. */
  2. import { decodeAddress } from '@nexajs/address'
  3. import moment from 'moment'
  4. import PouchDB from 'pouchdb'
  5. import { v4 as uuidv4 } from 'uuid'
  6. /* Initialize databases. */
  7. const promosDb = new PouchDB(`http://${process.env.COUCHDB_USER}:${process.env.COUCHDB_PASSWORD}@127.0.0.1:5984/promos`)
  8. export default defineEventHandler(async (event) => {
  9. let action
  10. let address
  11. let body
  12. let decoded
  13. let error
  14. let label
  15. let pkg
  16. let response
  17. let slug
  18. /* Set (request) body. */
  19. body = await readBody(event)
  20. // console.log('SESSIONS.POST (body):', body)
  21. /* Initialize locals. */
  22. action = body?.action
  23. pkg = {}
  24. if (action === 'register') {
  25. address = body?.address
  26. label = body?.label
  27. slug = address.slice(-6)
  28. const owners = [""]
  29. const createdAt = moment().unix()
  30. try {
  31. decoded = decodeAddress(address)
  32. console.log('DECODED', decoded)
  33. response = await promosDb.put({
  34. _id: address,
  35. label,
  36. slug,
  37. owners,
  38. createdAt,
  39. })
  40. .catch(err => {
  41. console.error(err)
  42. console.log('ERROR!', err.message)
  43. pkg.error = err.message
  44. })
  45. console.log('RESPONSE', response)
  46. pkg.success = true
  47. pkg.decoded = decoded
  48. pkg.response = response
  49. } catch (err) {
  50. console.error(err)
  51. console.error('ERROR', err.message)
  52. pkg.error = err.message
  53. }
  54. }
  55. /* Return session. */
  56. return pkg
  57. })