2022-11-25 19:24:05 +03:30
|
|
|
import Redis from "ioredis";
|
2019-10-08 21:56:03 +03:30
|
|
|
|
2020-01-30 18:51:52 +03:30
|
|
|
import env from "./env";
|
|
|
|
|
2022-11-25 19:24:05 +03:30
|
|
|
const client = new Redis({
|
2020-01-30 18:51:52 +03:30
|
|
|
host: env.REDIS_HOST,
|
|
|
|
port: env.REDIS_PORT,
|
2022-11-10 15:05:11 +03:30
|
|
|
db: env.REDIS_DB,
|
2020-01-30 18:51:52 +03:30
|
|
|
...(env.REDIS_PASSWORD && { password: env.REDIS_PASSWORD })
|
2019-11-02 18:32:24 +03:30
|
|
|
});
|
2019-10-08 21:56:03 +03:30
|
|
|
|
2022-11-25 19:24:05 +03:30
|
|
|
export default client;
|
2020-01-30 18:51:52 +03:30
|
|
|
|
|
|
|
export const key = {
|
|
|
|
link: (address: string, domain_id?: number, user_id?: number) =>
|
|
|
|
`${address}-${domain_id || ""}-${user_id || ""}`,
|
|
|
|
domain: (address: string) => `d-${address}`,
|
|
|
|
stats: (link_id: number) => `s-${link_id}`,
|
|
|
|
host: (address: string) => `h-${address}`,
|
|
|
|
user: (emailOrKey: string) => `u-${emailOrKey}`
|
|
|
|
};
|
|
|
|
|
|
|
|
export const remove = {
|
|
|
|
domain: (domain?: Domain) => {
|
|
|
|
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
|
|
|
},
|
|
|
|
host: (host?: Host) => {
|
|
|
|
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
|
|
|
},
|
|
|
|
link: (link?: Link) => {
|
|
|
|
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
|
|
|
},
|
|
|
|
user: (user?: User) => {
|
|
|
|
if (!user) return;
|
2022-11-25 19:24:05 +03:30
|
|
|
return Promise.all([
|
|
|
|
client.del(key.user(user.email)),
|
|
|
|
client.del(key.user(user.apikey))
|
|
|
|
]);
|
2020-01-30 18:51:52 +03:30
|
|
|
}
|
|
|
|
};
|