44 lines
1.1 KiB
TypeScript
44 lines
1.1 KiB
TypeScript
import Redis from "ioredis";
|
|
|
|
import env from "./env";
|
|
|
|
const client = new Redis({
|
|
host: env.REDIS_HOST,
|
|
port: env.REDIS_PORT,
|
|
db: env.REDIS_DB,
|
|
...(env.REDIS_PASSWORD && { password: env.REDIS_PASSWORD })
|
|
});
|
|
|
|
export default client;
|
|
|
|
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;
|
|
return client.del(key.domain(domain.address));
|
|
},
|
|
host: (host?: Host) => {
|
|
if (!host) return;
|
|
return client.del(key.host(host.address));
|
|
},
|
|
link: (link?: Link) => {
|
|
if (!link) return;
|
|
return client.del(key.link(link.address, link.domain_id));
|
|
},
|
|
user: (user?: User) => {
|
|
if (!user) return;
|
|
return Promise.all([
|
|
client.del(key.user(user.email)),
|
|
client.del(key.user(user.apikey))
|
|
]);
|
|
}
|
|
};
|