Add 1 day cache limit to user/website/session

This commit is contained in:
Brian Cao 2023-08-23 12:17:32 -07:00
parent d43ab3e559
commit 06de67ec55

View file

@ -2,17 +2,20 @@ import { User, Website } from '@prisma/client';
import redis from '@umami/redis-client'; import redis from '@umami/redis-client';
import { getSession, getUserById, getWebsiteById } from '../queries'; import { getSession, getUserById, getWebsiteById } from '../queries';
const { fetchObject, storeObject, deleteObject } = redis; const { fetchObject, storeObject, deleteObject, expire } = redis;
async function fetchWebsite(id): Promise<Website> { async function fetchWebsite(id): Promise<Website> {
return fetchObject(`website:${id}`, () => getWebsiteById(id)); return fetchObject(`website:${id}`, () => getWebsiteById(id), 86400);
} }
async function storeWebsite(data) { async function storeWebsite(data) {
const { id } = data; const { id } = data;
const key = `website:${id}`; const key = `website:${id}`;
return storeObject(key, data); const obj = await storeObject(key, data);
await expire(key, 86400);
return obj;
} }
async function deleteWebsite(id) { async function deleteWebsite(id) {
@ -20,14 +23,17 @@ async function deleteWebsite(id) {
} }
async function fetchUser(id): Promise<User> { async function fetchUser(id): Promise<User> {
return fetchObject(`user:${id}`, () => getUserById(id, { includePassword: true })); return fetchObject(`user:${id}`, () => getUserById(id, { includePassword: true }), 86400);
} }
async function storeUser(data) { async function storeUser(data) {
const { id } = data; const { id } = data;
const key = `user:${id}`; const key = `user:${id}`;
return storeObject(key, data); const obj = await storeObject(key, data);
await expire(key, 86400);
return obj;
} }
async function deleteUser(id) { async function deleteUser(id) {
@ -35,14 +41,17 @@ async function deleteUser(id) {
} }
async function fetchSession(id) { async function fetchSession(id) {
return fetchObject(`session:${id}`, () => getSession(id)); return fetchObject(`session:${id}`, () => getSession(id), 86400);
} }
async function storeSession(data) { async function storeSession(data) {
const { id } = data; const { id } = data;
const key = `session:${id}`; const key = `session:${id}`;
return storeObject(key, data); const obj = await storeObject(key, data);
await expire(key, 86400);
return obj;
} }
async function deleteSession(id) { async function deleteSession(id) {