domains.handler.js 1.5 KB

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