add db call as fallback

This commit is contained in:
Brian Cao 2022-08-29 13:04:58 -07:00
parent 9ddbd12060
commit b6cd9f305b
10 changed files with 71 additions and 40 deletions

View file

@ -6,6 +6,7 @@ import { REDIS } from 'lib/db';
const log = debug('umami:redis');
const INITIALIZED = 'redis:initialized';
export const DELETED = 'deleted';
function getClient() {
const redis = new Redis(process.env.REDIS_URL);

View file

@ -1,7 +1,7 @@
import { parseToken } from 'next-basics';
import { validate } from 'uuid';
import { uuid } from 'lib/crypto';
import redis from 'lib/redis';
import redis, { DELETED } from 'lib/redis';
import { getClientInfo, getJsonBody } from 'lib/request';
import { createSession, getSessionByUuid, getWebsiteByUuid } from 'queries';
@ -30,17 +30,18 @@ export async function getSession(req) {
let websiteId = null;
//console.log(await redis.stageData());
// Check if website exists
if (process.env.REDIS_URL) {
websiteId = await redis.client.get(`website:${website_uuid}`);
} else {
if (redis.client) {
websiteId = BigInt(await redis.client.get(`website:${website_uuid}`));
}
// Check database if redis does not have
if (!websiteId) {
const { website_id } = await getWebsiteByUuid(website_uuid);
websiteId = website_id;
}
if (!websiteId) {
if (!websiteId || websiteId === DELETED) {
throw new Error(`Website not found: ${website_uuid}`);
}
@ -53,9 +54,12 @@ export async function getSession(req) {
let session = null;
// Check if session exists
if (process.env.REDIS_URL) {
if (redis.client) {
sessionCreated = !!(await redis.client.get(`session:${session_uuid}`));
} else {
}
// Check database if redis does not have
if (!sessionCreated) {
session = await getSessionByUuid(session_uuid);
sessionCreated = !!session;
sessionId = session ? session.session_id : null;