members.ts 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. const router = require('express').Router()
  2. import {
  3. Member,
  4. Post,
  5. Proposal,
  6. Council,
  7. Consul,
  8. ConsulStake,
  9. ProposalVote,
  10. } from '../db/models'
  11. const findMember = (handle: number | string) =>
  12. handle > 0 ? Member.findByPk(handle) : Member.findOne({ where: { handle } })
  13. router.get('/', async (req: any, res: any, next: any) => {
  14. try {
  15. Member.findAll().then((m: any) => res.json(m))
  16. } catch (err) {
  17. next(err)
  18. }
  19. })
  20. router.get('/:id', async (req: any, res: any, next: any) => {
  21. try {
  22. res.json(await findMember(req.params.id))
  23. } catch (err) {
  24. next(err)
  25. }
  26. })
  27. router.get('/:id/posts', async (req: any, res: any, next: any) => {
  28. try {
  29. const { id } = await findMember(req.params.id)
  30. if (!id) res.json({})
  31. const posts = await Post.findWithIncludes({ where: { authorId: id } })
  32. res.json(posts)
  33. } catch (err) {
  34. next(err)
  35. }
  36. })
  37. router.get('/:id/proposals', async (req: any, res: any, next: any) => {
  38. try {
  39. const { id } = await findMember(req.params.id)
  40. if (!id) res.json({})
  41. const proposals = await Proposal.findWithIncludes({
  42. where: { authorId: id },
  43. })
  44. res.json(proposals)
  45. } catch (err) {
  46. next(err)
  47. }
  48. })
  49. router.get('/:id/terms', async (req: any, res: any, next: any) => {
  50. try {
  51. const { id } = await findMember(req.params.id)
  52. if (!id) res.json({})
  53. const terms = await Consul.findWithIncludes({ where: { memberId: id } })
  54. res.json(terms)
  55. } catch (err) {
  56. next(err)
  57. }
  58. })
  59. router.get('/:id/votes', async (req: any, res: any, next: any) => {
  60. try {
  61. const member = await findMember(req.params.id)
  62. if (!member) res.json({})
  63. const memberId = member.id
  64. const proposals = await Consul.findAll({
  65. where: { memberId },
  66. include: [
  67. {
  68. association: 'votes',
  69. include: [
  70. {
  71. model: Proposal,
  72. attributes: ['title'],
  73. },
  74. ],
  75. },
  76. ],
  77. })
  78. const councils = await Consul.findAll({
  79. include: [
  80. { model: Member, attributes: ['handle'] },
  81. { association: 'voters', required: true, where: { memberId } },
  82. ],
  83. })
  84. return res.json({ councils, proposals })
  85. } catch (err) {
  86. next(err)
  87. }
  88. })
  89. router.post('/', async (req: any, res: any, next: any) => {
  90. try {
  91. //Member.create(req.body).then((member: any) => res.json(member))
  92. } catch (err) {
  93. next(err)
  94. }
  95. })
  96. router.put('/:id', async (req: any, res: any, next: any) => {
  97. try {
  98. // Member.findByPk(req.params.id).then((member: any) =>
  99. // member.update(req.body).then((m: any) => res.json(m))
  100. // )
  101. } catch (err) {
  102. next(err)
  103. }
  104. })
  105. router.post('/:id/delete', async (req: any, res: any, next: any) => {
  106. try {
  107. //Member.findByPk(req.params.id).then((member:any)=>res.json(member.delete())
  108. } catch (err) {
  109. next(err)
  110. }
  111. })
  112. module.exports = router