Monorepo containing core modules of Zeichen.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

37 lines
942 B

  1. import ORM, { DatabaseKind } from '../../utilities/ORM'
  2. import * as Service from '../../services/entities/Note'
  3. import Model from '../../models/Note'
  4. export default async (req, res) => {
  5. const orm = new ORM({
  6. kind: process.env.DATABASE_DIALECT as DatabaseKind,
  7. url: process.env.DATABASE_URL,
  8. })
  9. const repository = orm.getRepository(Model)
  10. const methodHandlers = {
  11. 'GET': Service.getMultiple(repository),
  12. }
  13. const { [req.method as keyof typeof methodHandlers]: handler = null } = methodHandlers
  14. if (handler === null) {
  15. res.statusCode = 415
  16. res.json({ message: 'Method not allowed.' })
  17. return
  18. }
  19. try {
  20. const { status, data, } = await handler(req.query)
  21. res.statusCode = status
  22. res.json(data)
  23. } catch (err) {
  24. console.error(err)
  25. const { status, data, } = err
  26. res.statusCode = status
  27. if (data && status !== 204) {
  28. res.json(data)
  29. return
  30. }
  31. res.end()
  32. }
  33. }