ip.queries.js 1013 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. const { subMinutes } = require("date-fns");
  2. const utils = require("../utils");
  3. const knex = require("../knex");
  4. const env = require("../env");
  5. async function add(ipToAdd) {
  6. const ip = ipToAdd.toLowerCase();
  7. const currentIP = await knex("ips").where("ip", ip).first();
  8. if (currentIP) {
  9. const currentDate = utils.dateToUTC(new Date());
  10. await knex("ips")
  11. .where({ ip })
  12. .update({
  13. created_at: currentDate,
  14. updated_at: currentDate
  15. });
  16. } else {
  17. await knex("ips").insert({ ip });
  18. }
  19. return ip;
  20. }
  21. async function find(match) {
  22. const query = knex("ips");
  23. Object.entries(match).forEach(([key, value]) => {
  24. query.andWhere(key, ...(Array.isArray(value) ? value : [value]));
  25. });
  26. const ip = await query.first();
  27. return ip;
  28. }
  29. function clear() {
  30. return knex("ips")
  31. .where(
  32. "created_at",
  33. "<",
  34. utils.dateToUTC(subMinutes(new Date(), env.NON_USER_COOLDOWN))
  35. )
  36. .delete();
  37. }
  38. module.exports = {
  39. add,
  40. clear,
  41. find,
  42. }