| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- const Redis = require("ioredis");
- const env = require("./env");
- let client;
- if (env.REDIS_ENABLED) {
- client = new Redis({
- host: env.REDIS_HOST,
- port: env.REDIS_PORT,
- db: env.REDIS_DB,
- ...(env.REDIS_PASSWORD && { password: env.REDIS_PASSWORD })
- });
- }
- const key = {
- link: (address, domain_id, user_id) => `l:${address}:${domain_id || ""}:${user_id || ""}`,
- domain: (address) => `d:${address}`,
- stats: (link_id) => `s:${link_id}`,
- host: (address) => `h:${address}`,
- user: (idOrKey) => `u:${idOrKey}`
- };
- const remove = {
- domain: (domain) => {
- if (!domain) return;
- return client.del(key.domain(domain.address));
- },
- host: (host) => {
- if (!host) return;
- return client.del(key.host(host.address));
- },
- link: (link) => {
- if (!link) return;
- return client.del(key.link(link.address, link.domain_id));
- },
- user: (user) => {
- if (!user) return;
- return Promise.all([
- client.del(key.user(user.id)),
- client.del(key.user(user.apikey)),
- ]);
- }
- };
- module.exports = {
- client,
- key,
- remove,
- }
|