2024-08-11 18:41:03 +03:30
|
|
|
const Redis = require("ioredis");
|
2019-10-08 21:56:03 +03:30
|
|
|
|
2024-08-11 18:41:03 +03:30
|
|
|
const env = require("./env");
|
2020-01-30 18:51:52 +03:30
|
|
|
|
2024-10-21 14:59:55 +03:30
|
|
|
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 })
|
|
|
|
});
|
|
|
|
}
|
2019-10-08 21:56:03 +03:30
|
|
|
|
2024-08-11 18:41:03 +03:30
|
|
|
const key = {
|
2025-01-07 22:01:20 +03:30
|
|
|
link: (address, domain_id) => `l:${address}:${domain_id || ""}`,
|
2025-01-01 12:54:02 +03:30
|
|
|
domain: (address) => `d:${address}`,
|
|
|
|
stats: (link_id) => `s:${link_id}`,
|
|
|
|
host: (address) => `h:${address}`,
|
|
|
|
user: (idOrKey) => `u:${idOrKey}`
|
2020-01-30 18:51:52 +03:30
|
|
|
};
|
|
|
|
|
2024-08-11 18:41:03 +03:30
|
|
|
const remove = {
|
|
|
|
domain: (domain) => {
|
2020-01-30 18:51:52 +03:30
|
|
|
if (!domain) return;
|
2022-11-25 19:24:05 +03:30
|
|
|
return client.del(key.domain(domain.address));
|
2020-01-30 18:51:52 +03:30
|
|
|
},
|
2024-08-11 18:41:03 +03:30
|
|
|
host: (host) => {
|
2020-01-30 18:51:52 +03:30
|
|
|
if (!host) return;
|
2022-11-25 19:24:05 +03:30
|
|
|
return client.del(key.host(host.address));
|
2020-01-30 18:51:52 +03:30
|
|
|
},
|
2024-08-11 18:41:03 +03:30
|
|
|
link: (link) => {
|
2020-01-30 18:51:52 +03:30
|
|
|
if (!link) return;
|
2022-11-25 19:24:05 +03:30
|
|
|
return client.del(key.link(link.address, link.domain_id));
|
2020-01-30 18:51:52 +03:30
|
|
|
},
|
2024-08-11 18:41:03 +03:30
|
|
|
user: (user) => {
|
2020-01-30 18:51:52 +03:30
|
|
|
if (!user) return;
|
2022-11-25 19:24:05 +03:30
|
|
|
return Promise.all([
|
2024-12-28 11:11:29 +03:30
|
|
|
client.del(key.user(user.id)),
|
|
|
|
client.del(key.user(user.apikey)),
|
2022-11-25 19:24:05 +03:30
|
|
|
]);
|
2020-01-30 18:51:52 +03:30
|
|
|
}
|
|
|
|
};
|
2024-08-11 18:41:03 +03:30
|
|
|
|
|
|
|
|
|
|
|
module.exports = {
|
|
|
|
client,
|
|
|
|
key,
|
|
|
|
remove,
|
|
|
|
}
|