import { subMinutes } from "date-fns"; import knex from "../knex"; export const addIP = async (ipToGet: string) => { const ip = ipToGet.toLowerCase(); const currentIP = await knex("ips") .where({ ip }) .first(); if (currentIP) { const currentDate = new Date().toISOString(); await knex("ips") .where({ ip }) .update({ created_at: currentDate, updated_at: currentDate }); } else { await knex("ips").insert({ ip }); } return ip; }; export const getIP = async (ip: string) => { const cooldownConfig = Number(process.env.NON_USER_COOLDOWN); const matchedIp = await knex("ips") .where({ ip: ip.toLowerCase() }) .andWhere( "created_at", ">", subMinutes(new Date(), cooldownConfig).toISOString() ) .first(); return matchedIp; }; export const clearIPs = async () => knex("ips") .where( "created_at", "<", subMinutes( new Date(), Number(process.env.NON_USER_COOLDOWN) ).toISOString() ) .delete();