ip.queries.js 972 B

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