domains.handler.js 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. const { Handler } = require("express");
  2. const { CustomError, sanitize } = require("../utils");
  3. const query = require("../queries");
  4. const redis = require("../redis");
  5. async function add(req, res) {
  6. const { address, homepage } = req.body;
  7. const domain = await query.domain.add({
  8. address,
  9. homepage,
  10. user_id: req.user.id
  11. });
  12. if (req.isHTML) {
  13. const domains = (await query.domain.get({ user_id: req.user.id })).map(sanitize.domain);
  14. res.setHeader("HX-Reswap", "none");
  15. res.render("partials/settings/domain/table", {
  16. domains
  17. });
  18. return;
  19. }
  20. return res.status(200).send(sanitize.domain(domain));
  21. };
  22. async function remove(req, res) {
  23. const domain = await query.domain.find({
  24. uuid: req.params.id,
  25. user_id: req.user.id
  26. });
  27. if (!domain) {
  28. throw new CustomError("Could not delete the domain.", 500);
  29. }
  30. const [updatedDomain] = await query.domain.update(
  31. { id: domain.id },
  32. { user_id: null }
  33. );
  34. if (!updatedDomain) {
  35. throw new CustomError("Could not delete the domain.", 500);
  36. }
  37. redis.remove.domain(updatedDomain);
  38. if (req.isHTML) {
  39. const domains = (await query.domain.get({ user_id: req.user.id })).map(sanitize.domain);
  40. res.setHeader("HX-Reswap", "outerHTML");
  41. res.render("partials/settings/domain/delete_success", {
  42. domains,
  43. address: domain.address,
  44. });
  45. return;
  46. }
  47. return res.status(200).send({ message: "Domain deleted successfully" });
  48. };
  49. module.exports = {
  50. add,
  51. remove,
  52. }