From e25f626ad1e5f1743a21bef7ca90efce0c64af93 Mon Sep 17 00:00:00 2001 From: joshuasilva414 Date: Sun, 15 Dec 2024 20:22:54 -0600 Subject: [PATCH 1/6] Add HK_ENV prefix --- apps/web/src/actions/admin/modify-nav-item.ts | 36 +++++++++++++------ .../src/actions/admin/registration-actions.ts | 25 ++++++++++--- .../app/admin/toggles/registration/page.tsx | 14 ++++---- apps/web/src/app/register/page.tsx | 4 +-- apps/web/src/app/rsvp/page.tsx | 4 +-- .../src/app/sign-up/[[...sign-up]]/page.tsx | 4 +-- apps/web/src/env.ts | 1 + apps/web/src/lib/utils/server/redis.ts | 6 ++-- turbo.json | 1 + 9 files changed, 65 insertions(+), 30 deletions(-) diff --git a/apps/web/src/actions/admin/modify-nav-item.ts b/apps/web/src/actions/admin/modify-nav-item.ts index 5dc3a48e..31ac0c02 100644 --- a/apps/web/src/actions/admin/modify-nav-item.ts +++ b/apps/web/src/actions/admin/modify-nav-item.ts @@ -16,12 +16,18 @@ const navAdminPage = "/admin/toggles/landing"; export const setItem = adminAction .schema(metadataSchema) .action(async ({ parsedInput: { name, url }, ctx: { user, userId } }) => { - await kv.sadd("config:navitemslist", encodeURIComponent(name)); - await kv.hset(`config:navitems:${encodeURIComponent(name)}`, { - url, - name, - enabled: true, - }); + await kv.sadd( + `${process.env.HK_ENV}_config:navitemslist`, + encodeURIComponent(name), + ); + await kv.hset( + `${process.env.HK_ENV}_config:navitems:${encodeURIComponent(name)}`, + { + url, + name, + enabled: true, + }, + ); revalidatePath(navAdminPage); return { success: true }; }); @@ -30,8 +36,13 @@ export const removeItem = adminAction .schema(z.string()) .action(async ({ parsedInput: name, ctx: { user, userId } }) => { const pipe = kv.pipeline(); - pipe.srem("config:navitemslist", encodeURIComponent(name)); - pipe.del(`config:navitems:${encodeURIComponent(name)}`); + pipe.srem( + `${process.env.HK_ENV}_config:navitemslist`, + encodeURIComponent(name), + ); + pipe.del( + `${process.env.HK_ENV}_config:navitems:${encodeURIComponent(name)}`, + ); await pipe.exec(); // await new Promise((resolve) => setTimeout(resolve, 1500)); revalidatePath(navAdminPage); @@ -45,9 +56,12 @@ export const toggleItem = adminAction parsedInput: { name, statusToSet }, ctx: { user, userId }, }) => { - await kv.hset(`config:navitems:${encodeURIComponent(name)}`, { - enabled: statusToSet, - }); + await kv.hset( + `${process.env.HK_ENV}_config:navitems:${encodeURIComponent(name)}`, + { + enabled: statusToSet, + }, + ); revalidatePath(navAdminPage); return { success: true, itemStatus: statusToSet }; }, diff --git a/apps/web/src/actions/admin/registration-actions.ts b/apps/web/src/actions/admin/registration-actions.ts index a3c52211..a7951ae9 100644 --- a/apps/web/src/actions/admin/registration-actions.ts +++ b/apps/web/src/actions/admin/registration-actions.ts @@ -16,7 +16,10 @@ const defaultRSVPLimitSchema = z.object({ export const toggleRegistrationEnabled = adminAction .schema(defaultRegistrationToggleSchema) .action(async ({ parsedInput: { enabled }, ctx: { user, userId } }) => { - await kv.set("config:registration:registrationEnabled", enabled); + await kv.set( + `${process.env.HK_ENV}_config:registration:registrationEnabled`, + enabled, + ); revalidatePath("/admin/toggles/registration"); return { success: true, statusSet: enabled }; }); @@ -24,7 +27,10 @@ export const toggleRegistrationEnabled = adminAction export const toggleRegistrationMessageEnabled = adminAction .schema(defaultRegistrationToggleSchema) .action(async ({ parsedInput: { enabled }, ctx: { user, userId } }) => { - await kv.set("config:registration:registrationMessageEnabled", enabled); + await kv.set( + `${process.env.HK_ENV}_config:registration:registrationMessageEnabled`, + enabled, + ); revalidatePath("/admin/toggles/registration"); return { success: true, statusSet: enabled }; }); @@ -32,7 +38,10 @@ export const toggleRegistrationMessageEnabled = adminAction export const toggleSecretRegistrationEnabled = adminAction .schema(defaultRegistrationToggleSchema) .action(async ({ parsedInput: { enabled }, ctx: { user, userId } }) => { - await kv.set("config:registration:secretRegistrationEnabled", enabled); + await kv.set( + `${process.env.HK_ENV}_config:registration:secretRegistrationEnabled`, + enabled, + ); revalidatePath("/admin/toggles/registration"); return { success: true, statusSet: enabled }; }); @@ -40,7 +49,10 @@ export const toggleSecretRegistrationEnabled = adminAction export const toggleRSVPs = adminAction .schema(defaultRegistrationToggleSchema) .action(async ({ parsedInput: { enabled }, ctx: { user, userId } }) => { - await kv.set("config:registration:allowRSVPs", enabled); + await kv.set( + `${process.env.HK_ENV}_config:registration:allowRSVPs`, + enabled, + ); revalidatePath("/admin/toggles/registration"); return { success: true, statusSet: enabled }; }); @@ -48,7 +60,10 @@ export const toggleRSVPs = adminAction export const setRSVPLimit = adminAction .schema(defaultRSVPLimitSchema) .action(async ({ parsedInput: { rsvpLimit }, ctx: { user, userId } }) => { - await kv.set("config:registration:maxRSVPs", rsvpLimit); + await kv.set( + `${process.env.HK_ENV}_config:registration:maxRSVPs`, + rsvpLimit, + ); revalidatePath("/admin/toggles/registration"); return { success: true, statusSet: rsvpLimit }; }); diff --git a/apps/web/src/app/admin/toggles/registration/page.tsx b/apps/web/src/app/admin/toggles/registration/page.tsx index 8d7dbf42..50a48dbd 100644 --- a/apps/web/src/app/admin/toggles/registration/page.tsx +++ b/apps/web/src/app/admin/toggles/registration/page.tsx @@ -5,8 +5,10 @@ import c from "config"; export default async function Page() { const pipe = kv.pipeline(); - pipe.get("config:registration:registrationEnabled"); - pipe.get("config:registration:secretRegistrationEnabled"); + pipe.get(`${process.env.HK_ENV}_config:registration:registrationEnabled`); + pipe.get( + `${process.env.HK_ENV}_config:registration:secretRegistrationEnabled`, + ); // const result = await pipe.exec(); const [ @@ -15,10 +17,10 @@ export default async function Page() { defaultRSVPsEnabled, defaultRSVPLimit, ]: (string | null)[] = await kv.mget( - "config:registration:registrationEnabled", - "config:registration:secretRegistrationEnabled", - "config:registration:allowRSVPs", - "config:registration:maxRSVPs", + `${process.env.HK_ENV}_config:registration:registrationEnabled`, + `${process.env.HK_ENV}_config:registration:secretRegistrationEnabled`, + `${process.env.HK_ENV}_config:registration:allowRSVPs`, + `${process.env.HK_ENV}_config:registration:maxRSVPs`, ); return ( diff --git a/apps/web/src/app/register/page.tsx b/apps/web/src/app/register/page.tsx index db808b98..19531c46 100644 --- a/apps/web/src/app/register/page.tsx +++ b/apps/web/src/app/register/page.tsx @@ -23,8 +23,8 @@ export default async function Page() { | string | null )[] = await kv.mget( - "config:registration:registrationEnabled", - "config:registration:secretRegistrationEnabled", + `${process.env.HK_ENV}_config:registration:registrationEnabled`, + `${process.env.HK_ENV}_config:registration:secretRegistrationEnabled`, ); if (parseRedisBoolean(defaultRegistrationEnabled, true) === true) { diff --git a/apps/web/src/app/rsvp/page.tsx b/apps/web/src/app/rsvp/page.tsx index 4de7c7bf..b3982ebe 100644 --- a/apps/web/src/app/rsvp/page.tsx +++ b/apps/web/src/app/rsvp/page.tsx @@ -41,7 +41,7 @@ export default async function RsvpPage({ } const rsvpEnabled = parseRedisBoolean( - (await kv.get("config:registration:allowRSVPs")) as + (await kv.get(`${process.env.HK_ENV}_config:registration:allowRSVPs`)) as | string | boolean | null @@ -53,7 +53,7 @@ export default async function RsvpPage({ if (rsvpEnabled === true) { const rsvpLimit = parseRedisNumber( - await kv.get("config:registration:maxRSVPs"), + await kv.get(`${process.env.HK_ENV}_config:registration:maxRSVPs`), c.rsvpDefaultLimit, ); diff --git a/apps/web/src/app/sign-up/[[...sign-up]]/page.tsx b/apps/web/src/app/sign-up/[[...sign-up]]/page.tsx index 057a6407..62000c1d 100644 --- a/apps/web/src/app/sign-up/[[...sign-up]]/page.tsx +++ b/apps/web/src/app/sign-up/[[...sign-up]]/page.tsx @@ -10,8 +10,8 @@ export default async function Page() { | string | null )[] = await kv.mget( - "config:registration:registrationEnabled", - "config:registration:secretRegistrationEnabled", + `${process.env.HK_ENV}_config:registration:registrationEnabled`, + `${process.env.HK_ENV}_config:registration:secretRegistrationEnabled`, ); if (parseRedisBoolean(defaultRegistrationEnabled, true) === true) { diff --git a/apps/web/src/env.ts b/apps/web/src/env.ts index 9b6c7a54..0130bcfe 100644 --- a/apps/web/src/env.ts +++ b/apps/web/src/env.ts @@ -10,6 +10,7 @@ export const env = createEnv({ AWS_SES_EMAIL_FROM: z.string().min(1), INTERNAL_AUTH_KEY: z.string().min(64), BOT_API_URL: z.string().min(1), + HK_ENV: z.string().min(1), NODE_ENV: z .enum(["development", "test", "production"]) .default("development"), diff --git a/apps/web/src/lib/utils/server/redis.ts b/apps/web/src/lib/utils/server/redis.ts index d25f55c5..80e3e433 100644 --- a/apps/web/src/lib/utils/server/redis.ts +++ b/apps/web/src/lib/utils/server/redis.ts @@ -2,7 +2,9 @@ import { kv } from "@vercel/kv"; import type { NavItemToggleType } from "@/validators/shared/navitemtoggle"; export async function getAllNavItems() { - const keys = await kv.smembers("config:navitemslist"); + const keys = await kv.smembers( + `${process.env.HK_ENV}_config:navitemslist`, + ); if (!keys || keys.length < 1) { return { keys: [], @@ -11,7 +13,7 @@ export async function getAllNavItems() { } const pipe = kv.pipeline(); for (const key of keys) { - pipe.hgetall(`config:navitems:${key}`); + pipe.hgetall(`${process.env.HK_ENV}_config:navitems:${key}`); } const items = await pipe.exec(); return { diff --git a/turbo.json b/turbo.json index ca6370bf..71c7b38a 100644 --- a/turbo.json +++ b/turbo.json @@ -22,6 +22,7 @@ "DISCORD_PROD_SERVER_ID", "DISCORD_PROD_VERIFY_CHANNEL_ID", "DISCORD_SECRET_TOKEN", + "HK_ENV", "INTERNAL_AUTH_KEY", "KV_REST_API_READ_ONLY_TOKEN", "KV_REST_API_TOKEN", From a38bff3b3830d07df71a59aaa69bdbb3fd6349c2 Mon Sep 17 00:00:00 2001 From: joshuasilva414 Date: Tue, 31 Dec 2024 17:26:14 -0600 Subject: [PATCH 2/6] Generalize basic kv function implementations --- apps/web/src/actions/admin/modify-nav-item.ts | 7 ++--- .../src/actions/admin/registration-actions.ts | 12 ++++----- apps/web/src/app/register/page.tsx | 4 +-- .../src/app/sign-up/[[...sign-up]]/page.tsx | 4 +-- apps/web/src/lib/utils/server/redis.ts | 26 +++++++++++++++++++ 5 files changed, 40 insertions(+), 13 deletions(-) diff --git a/apps/web/src/actions/admin/modify-nav-item.ts b/apps/web/src/actions/admin/modify-nav-item.ts index 31ac0c02..5d795d40 100644 --- a/apps/web/src/actions/admin/modify-nav-item.ts +++ b/apps/web/src/actions/admin/modify-nav-item.ts @@ -3,6 +3,7 @@ import { z } from "zod"; import { adminAction } from "@/lib/safe-action"; import { kv } from "@vercel/kv"; +import { sadd, hset } from "@/lib/utils/server/redis"; import { revalidatePath } from "next/cache"; const metadataSchema = z.object({ @@ -16,11 +17,11 @@ const navAdminPage = "/admin/toggles/landing"; export const setItem = adminAction .schema(metadataSchema) .action(async ({ parsedInput: { name, url }, ctx: { user, userId } }) => { - await kv.sadd( + await sadd( `${process.env.HK_ENV}_config:navitemslist`, encodeURIComponent(name), ); - await kv.hset( + await hset( `${process.env.HK_ENV}_config:navitems:${encodeURIComponent(name)}`, { url, @@ -56,7 +57,7 @@ export const toggleItem = adminAction parsedInput: { name, statusToSet }, ctx: { user, userId }, }) => { - await kv.hset( + await hset( `${process.env.HK_ENV}_config:navitems:${encodeURIComponent(name)}`, { enabled: statusToSet, diff --git a/apps/web/src/actions/admin/registration-actions.ts b/apps/web/src/actions/admin/registration-actions.ts index a7951ae9..3733b146 100644 --- a/apps/web/src/actions/admin/registration-actions.ts +++ b/apps/web/src/actions/admin/registration-actions.ts @@ -2,7 +2,7 @@ import { z } from "zod"; import { adminAction } from "@/lib/safe-action"; -import { kv } from "@vercel/kv"; +import { set } from "@/lib/utils/server/redis"; import { revalidatePath } from "next/cache"; const defaultRegistrationToggleSchema = z.object({ @@ -16,7 +16,7 @@ const defaultRSVPLimitSchema = z.object({ export const toggleRegistrationEnabled = adminAction .schema(defaultRegistrationToggleSchema) .action(async ({ parsedInput: { enabled }, ctx: { user, userId } }) => { - await kv.set( + await set( `${process.env.HK_ENV}_config:registration:registrationEnabled`, enabled, ); @@ -27,7 +27,7 @@ export const toggleRegistrationEnabled = adminAction export const toggleRegistrationMessageEnabled = adminAction .schema(defaultRegistrationToggleSchema) .action(async ({ parsedInput: { enabled }, ctx: { user, userId } }) => { - await kv.set( + await set( `${process.env.HK_ENV}_config:registration:registrationMessageEnabled`, enabled, ); @@ -38,7 +38,7 @@ export const toggleRegistrationMessageEnabled = adminAction export const toggleSecretRegistrationEnabled = adminAction .schema(defaultRegistrationToggleSchema) .action(async ({ parsedInput: { enabled }, ctx: { user, userId } }) => { - await kv.set( + await set( `${process.env.HK_ENV}_config:registration:secretRegistrationEnabled`, enabled, ); @@ -49,7 +49,7 @@ export const toggleSecretRegistrationEnabled = adminAction export const toggleRSVPs = adminAction .schema(defaultRegistrationToggleSchema) .action(async ({ parsedInput: { enabled }, ctx: { user, userId } }) => { - await kv.set( + await set( `${process.env.HK_ENV}_config:registration:allowRSVPs`, enabled, ); @@ -60,7 +60,7 @@ export const toggleRSVPs = adminAction export const setRSVPLimit = adminAction .schema(defaultRSVPLimitSchema) .action(async ({ parsedInput: { rsvpLimit }, ctx: { user, userId } }) => { - await kv.set( + await set( `${process.env.HK_ENV}_config:registration:maxRSVPs`, rsvpLimit, ); diff --git a/apps/web/src/app/register/page.tsx b/apps/web/src/app/register/page.tsx index 19531c46..984bba1b 100644 --- a/apps/web/src/app/register/page.tsx +++ b/apps/web/src/app/register/page.tsx @@ -4,7 +4,7 @@ import { auth, currentUser } from "@clerk/nextjs"; import { redirect } from "next/navigation"; import Navbar from "@/components/shared/Navbar"; import Link from "next/link"; -import { kv } from "@vercel/kv"; +import { mget } from "@/lib/utils/server/redis"; import { parseRedisBoolean } from "@/lib/utils/server/redis"; import { Button } from "@/components/shadcn/ui/button"; import { getUser } from "db/functions"; @@ -22,7 +22,7 @@ export default async function Page() { const [defaultRegistrationEnabled, defaultSecretRegistrationEnabled]: ( | string | null - )[] = await kv.mget( + )[] = await mget( `${process.env.HK_ENV}_config:registration:registrationEnabled`, `${process.env.HK_ENV}_config:registration:secretRegistrationEnabled`, ); diff --git a/apps/web/src/app/sign-up/[[...sign-up]]/page.tsx b/apps/web/src/app/sign-up/[[...sign-up]]/page.tsx index 62000c1d..169c3e85 100644 --- a/apps/web/src/app/sign-up/[[...sign-up]]/page.tsx +++ b/apps/web/src/app/sign-up/[[...sign-up]]/page.tsx @@ -1,5 +1,5 @@ import { SignUp } from "@clerk/nextjs"; -import { kv } from "@vercel/kv"; +import { mget } from "@/lib/utils/server/redis"; import { parseRedisBoolean } from "@/lib/utils/server/redis"; import c from "config"; import { Button } from "@/components/shadcn/ui/button"; @@ -9,7 +9,7 @@ export default async function Page() { const [defaultRegistrationEnabled, defaultSecretRegistrationEnabled]: ( | string | null - )[] = await kv.mget( + )[] = await mget( `${process.env.HK_ENV}_config:registration:registrationEnabled`, `${process.env.HK_ENV}_config:registration:secretRegistrationEnabled`, ); diff --git a/apps/web/src/lib/utils/server/redis.ts b/apps/web/src/lib/utils/server/redis.ts index 80e3e433..93d23a3e 100644 --- a/apps/web/src/lib/utils/server/redis.ts +++ b/apps/web/src/lib/utils/server/redis.ts @@ -1,6 +1,32 @@ import { kv } from "@vercel/kv"; import type { NavItemToggleType } from "@/validators/shared/navitemtoggle"; +export async function sadd(key: string, value: string): Promise { + return kv.sadd(key, value); +} + +export async function hset( + key: string, + value: Record, +): Promise { + return kv.hset(key, value); +} + +export async function set( + key: string, + value: TData, +): Promise { + return kv.set(key, value); +} + +export async function get(key: string): Promise { + return kv.get(key); +} + +export async function mget(...keys: string[]): Promise { + return kv.mget(keys); +} + export async function getAllNavItems() { const keys = await kv.smembers( `${process.env.HK_ENV}_config:navitemslist`, From b8be971d98ea1495fe743ccecc3a133aaeebedcd Mon Sep 17 00:00:00 2001 From: joshuasilva414 Date: Wed, 1 Jan 2025 21:25:42 -0600 Subject: [PATCH 3/6] remove unused imports and refactor removeItem --- apps/web/src/actions/admin/modify-nav-item.ts | 13 ++----------- .../web/src/app/admin/toggles/registration/page.tsx | 11 ++--------- apps/web/src/app/rsvp/page.tsx | 11 +++++++---- apps/web/src/lib/utils/server/redis.ts | 12 ++++++++++++ 4 files changed, 23 insertions(+), 24 deletions(-) diff --git a/apps/web/src/actions/admin/modify-nav-item.ts b/apps/web/src/actions/admin/modify-nav-item.ts index 5d795d40..480f4316 100644 --- a/apps/web/src/actions/admin/modify-nav-item.ts +++ b/apps/web/src/actions/admin/modify-nav-item.ts @@ -2,8 +2,7 @@ import { z } from "zod"; import { adminAction } from "@/lib/safe-action"; -import { kv } from "@vercel/kv"; -import { sadd, hset } from "@/lib/utils/server/redis"; +import { sadd, hset, removeNavItem } from "@/lib/utils/server/redis"; import { revalidatePath } from "next/cache"; const metadataSchema = z.object({ @@ -36,15 +35,7 @@ export const setItem = adminAction export const removeItem = adminAction .schema(z.string()) .action(async ({ parsedInput: name, ctx: { user, userId } }) => { - const pipe = kv.pipeline(); - pipe.srem( - `${process.env.HK_ENV}_config:navitemslist`, - encodeURIComponent(name), - ); - pipe.del( - `${process.env.HK_ENV}_config:navitems:${encodeURIComponent(name)}`, - ); - await pipe.exec(); + await removeNavItem(name); // await new Promise((resolve) => setTimeout(resolve, 1500)); revalidatePath(navAdminPage); return { success: true }; diff --git a/apps/web/src/app/admin/toggles/registration/page.tsx b/apps/web/src/app/admin/toggles/registration/page.tsx index 50a48dbd..e696b5bb 100644 --- a/apps/web/src/app/admin/toggles/registration/page.tsx +++ b/apps/web/src/app/admin/toggles/registration/page.tsx @@ -1,22 +1,15 @@ import { RegistrationToggles } from "@/components/admin/toggles/RegistrationSettings"; -import { kv } from "@vercel/kv"; +import { mget } from "@/lib/utils/server/redis"; import { parseRedisBoolean, parseRedisNumber } from "@/lib/utils/server/redis"; import c from "config"; export default async function Page() { - const pipe = kv.pipeline(); - pipe.get(`${process.env.HK_ENV}_config:registration:registrationEnabled`); - pipe.get( - `${process.env.HK_ENV}_config:registration:secretRegistrationEnabled`, - ); - // const result = await pipe.exec(); - const [ defaultRegistrationEnabled, defaultSecretRegistrationEnabled, defaultRSVPsEnabled, defaultRSVPLimit, - ]: (string | null)[] = await kv.mget( + ]: (string | null)[] = await mget( `${process.env.HK_ENV}_config:registration:registrationEnabled`, `${process.env.HK_ENV}_config:registration:secretRegistrationEnabled`, `${process.env.HK_ENV}_config:registration:allowRSVPs`, diff --git a/apps/web/src/app/rsvp/page.tsx b/apps/web/src/app/rsvp/page.tsx index b3982ebe..a026d4d2 100644 --- a/apps/web/src/app/rsvp/page.tsx +++ b/apps/web/src/app/rsvp/page.tsx @@ -7,8 +7,11 @@ import { eq } from "db/drizzle"; import { userCommonData } from "db/schema"; import ClientToast from "@/components/shared/ClientToast"; import { SignedOut, RedirectToSignIn } from "@clerk/nextjs"; -import { kv } from "@vercel/kv"; -import { parseRedisBoolean, parseRedisNumber } from "@/lib/utils/server/redis"; +import { + parseRedisBoolean, + parseRedisNumber, + get, +} from "@/lib/utils/server/redis"; import Link from "next/link"; import { Button } from "@/components/shadcn/ui/button"; import { getUser } from "db/functions"; @@ -41,7 +44,7 @@ export default async function RsvpPage({ } const rsvpEnabled = parseRedisBoolean( - (await kv.get(`${process.env.HK_ENV}_config:registration:allowRSVPs`)) as + (await get(`${process.env.HK_ENV}_config:registration:allowRSVPs`)) as | string | boolean | null @@ -53,7 +56,7 @@ export default async function RsvpPage({ if (rsvpEnabled === true) { const rsvpLimit = parseRedisNumber( - await kv.get(`${process.env.HK_ENV}_config:registration:maxRSVPs`), + await get(`${process.env.HK_ENV}_config:registration:maxRSVPs`), c.rsvpDefaultLimit, ); diff --git a/apps/web/src/lib/utils/server/redis.ts b/apps/web/src/lib/utils/server/redis.ts index 93d23a3e..7187ae6b 100644 --- a/apps/web/src/lib/utils/server/redis.ts +++ b/apps/web/src/lib/utils/server/redis.ts @@ -48,6 +48,18 @@ export async function getAllNavItems() { }; } +export function removeNavItem(name: string) { + const pipe = kv.pipeline(); + pipe.srem( + `${process.env.HK_ENV}_config:navitemslist`, + encodeURIComponent(name), + ); + pipe.del( + `${process.env.HK_ENV}_config:navitems:${encodeURIComponent(name)}`, + ); + return pipe.exec(); +} + export function parseRedisBoolean( value: string | boolean | undefined | null, defaultValue?: boolean, From 9407fd6d212cfa2091fefb689edc22d1781638a4 Mon Sep 17 00:00:00 2001 From: joshuasilva414 Date: Thu, 2 Jan 2025 11:14:50 -0600 Subject: [PATCH 4/6] Move env key prefix to generic redis functions --- apps/web/src/actions/admin/modify-nav-item.ts | 6 ++--- .../src/actions/admin/registration-actions.ts | 10 ++++---- .../app/admin/toggles/registration/page.tsx | 8 +++---- apps/web/src/app/register/page.tsx | 4 ++-- apps/web/src/app/rsvp/page.tsx | 4 ++-- .../src/app/sign-up/[[...sign-up]]/page.tsx | 4 ++-- apps/web/src/lib/utils/server/redis.ts | 24 ++++++++++--------- 7 files changed, 31 insertions(+), 29 deletions(-) diff --git a/apps/web/src/actions/admin/modify-nav-item.ts b/apps/web/src/actions/admin/modify-nav-item.ts index 480f4316..99185e69 100644 --- a/apps/web/src/actions/admin/modify-nav-item.ts +++ b/apps/web/src/actions/admin/modify-nav-item.ts @@ -17,11 +17,11 @@ export const setItem = adminAction .schema(metadataSchema) .action(async ({ parsedInput: { name, url }, ctx: { user, userId } }) => { await sadd( - `${process.env.HK_ENV}_config:navitemslist`, + "config:navitemslist", encodeURIComponent(name), ); await hset( - `${process.env.HK_ENV}_config:navitems:${encodeURIComponent(name)}`, + "config:navitems:${encodeURIComponent(name)}", { url, name, @@ -49,7 +49,7 @@ export const toggleItem = adminAction ctx: { user, userId }, }) => { await hset( - `${process.env.HK_ENV}_config:navitems:${encodeURIComponent(name)}`, + "config:navitems:${encodeURIComponent(name)}", { enabled: statusToSet, }, diff --git a/apps/web/src/actions/admin/registration-actions.ts b/apps/web/src/actions/admin/registration-actions.ts index 3733b146..3cda7fa6 100644 --- a/apps/web/src/actions/admin/registration-actions.ts +++ b/apps/web/src/actions/admin/registration-actions.ts @@ -17,7 +17,7 @@ export const toggleRegistrationEnabled = adminAction .schema(defaultRegistrationToggleSchema) .action(async ({ parsedInput: { enabled }, ctx: { user, userId } }) => { await set( - `${process.env.HK_ENV}_config:registration:registrationEnabled`, + "config:registration:registrationEnabled", enabled, ); revalidatePath("/admin/toggles/registration"); @@ -28,7 +28,7 @@ export const toggleRegistrationMessageEnabled = adminAction .schema(defaultRegistrationToggleSchema) .action(async ({ parsedInput: { enabled }, ctx: { user, userId } }) => { await set( - `${process.env.HK_ENV}_config:registration:registrationMessageEnabled`, + "config:registration:registrationMessageEnabled", enabled, ); revalidatePath("/admin/toggles/registration"); @@ -39,7 +39,7 @@ export const toggleSecretRegistrationEnabled = adminAction .schema(defaultRegistrationToggleSchema) .action(async ({ parsedInput: { enabled }, ctx: { user, userId } }) => { await set( - `${process.env.HK_ENV}_config:registration:secretRegistrationEnabled`, + "config:registration:secretRegistrationEnabled", enabled, ); revalidatePath("/admin/toggles/registration"); @@ -50,7 +50,7 @@ export const toggleRSVPs = adminAction .schema(defaultRegistrationToggleSchema) .action(async ({ parsedInput: { enabled }, ctx: { user, userId } }) => { await set( - `${process.env.HK_ENV}_config:registration:allowRSVPs`, + "config:registration:allowRSVPs", enabled, ); revalidatePath("/admin/toggles/registration"); @@ -61,7 +61,7 @@ export const setRSVPLimit = adminAction .schema(defaultRSVPLimitSchema) .action(async ({ parsedInput: { rsvpLimit }, ctx: { user, userId } }) => { await set( - `${process.env.HK_ENV}_config:registration:maxRSVPs`, + "config:registration:maxRSVPs", rsvpLimit, ); revalidatePath("/admin/toggles/registration"); diff --git a/apps/web/src/app/admin/toggles/registration/page.tsx b/apps/web/src/app/admin/toggles/registration/page.tsx index e696b5bb..40edb8cd 100644 --- a/apps/web/src/app/admin/toggles/registration/page.tsx +++ b/apps/web/src/app/admin/toggles/registration/page.tsx @@ -10,10 +10,10 @@ export default async function Page() { defaultRSVPsEnabled, defaultRSVPLimit, ]: (string | null)[] = await mget( - `${process.env.HK_ENV}_config:registration:registrationEnabled`, - `${process.env.HK_ENV}_config:registration:secretRegistrationEnabled`, - `${process.env.HK_ENV}_config:registration:allowRSVPs`, - `${process.env.HK_ENV}_config:registration:maxRSVPs`, + "config:registration:registrationEnabled", + "config:registration:secretRegistrationEnabled", + "config:registration:allowRSVPs", + "config:registration:maxRSVPs", ); return ( diff --git a/apps/web/src/app/register/page.tsx b/apps/web/src/app/register/page.tsx index 984bba1b..5ea9210b 100644 --- a/apps/web/src/app/register/page.tsx +++ b/apps/web/src/app/register/page.tsx @@ -23,8 +23,8 @@ export default async function Page() { | string | null )[] = await mget( - `${process.env.HK_ENV}_config:registration:registrationEnabled`, - `${process.env.HK_ENV}_config:registration:secretRegistrationEnabled`, + "config:registration:registrationEnabled", + "config:registration:secretRegistrationEnabled", ); if (parseRedisBoolean(defaultRegistrationEnabled, true) === true) { diff --git a/apps/web/src/app/rsvp/page.tsx b/apps/web/src/app/rsvp/page.tsx index a026d4d2..b55a66e8 100644 --- a/apps/web/src/app/rsvp/page.tsx +++ b/apps/web/src/app/rsvp/page.tsx @@ -44,7 +44,7 @@ export default async function RsvpPage({ } const rsvpEnabled = parseRedisBoolean( - (await get(`${process.env.HK_ENV}_config:registration:allowRSVPs`)) as + (await get("config:registration:allowRSVPs")) as | string | boolean | null @@ -56,7 +56,7 @@ export default async function RsvpPage({ if (rsvpEnabled === true) { const rsvpLimit = parseRedisNumber( - await get(`${process.env.HK_ENV}_config:registration:maxRSVPs`), + await get("config:registration:maxRSVPs"), c.rsvpDefaultLimit, ); diff --git a/apps/web/src/app/sign-up/[[...sign-up]]/page.tsx b/apps/web/src/app/sign-up/[[...sign-up]]/page.tsx index 169c3e85..20111d04 100644 --- a/apps/web/src/app/sign-up/[[...sign-up]]/page.tsx +++ b/apps/web/src/app/sign-up/[[...sign-up]]/page.tsx @@ -10,8 +10,8 @@ export default async function Page() { | string | null )[] = await mget( - `${process.env.HK_ENV}_config:registration:registrationEnabled`, - `${process.env.HK_ENV}_config:registration:secretRegistrationEnabled`, + "config:registration:registrationEnabled", + "config:registration:secretRegistrationEnabled", ); if (parseRedisBoolean(defaultRegistrationEnabled, true) === true) { diff --git a/apps/web/src/lib/utils/server/redis.ts b/apps/web/src/lib/utils/server/redis.ts index 7187ae6b..3339c109 100644 --- a/apps/web/src/lib/utils/server/redis.ts +++ b/apps/web/src/lib/utils/server/redis.ts @@ -1,35 +1,39 @@ import { kv } from "@vercel/kv"; import type { NavItemToggleType } from "@/validators/shared/navitemtoggle"; +export function includeEnvPrefix(key: string) { + return `${process.env.HK_ENV}_${key}`; +} + export async function sadd(key: string, value: string): Promise { - return kv.sadd(key, value); + return kv.sadd(includeEnvPrefix(key), value); } export async function hset( key: string, value: Record, ): Promise { - return kv.hset(key, value); + return kv.hset(includeEnvPrefix(key), value); } export async function set( key: string, value: TData, ): Promise { - return kv.set(key, value); + return kv.set(includeEnvPrefix(key), value); } export async function get(key: string): Promise { - return kv.get(key); + return kv.get(includeEnvPrefix(key)); } export async function mget(...keys: string[]): Promise { - return kv.mget(keys); + return kv.mget(keys.map(includeEnvPrefix)); } export async function getAllNavItems() { const keys = await kv.smembers( - `${process.env.HK_ENV}_config:navitemslist`, + includeEnvPrefix("config:navitemslist"), ); if (!keys || keys.length < 1) { return { @@ -39,7 +43,7 @@ export async function getAllNavItems() { } const pipe = kv.pipeline(); for (const key of keys) { - pipe.hgetall(`${process.env.HK_ENV}_config:navitems:${key}`); + pipe.hgetall(includeEnvPrefix(`config:navitems:${key}`)); } const items = await pipe.exec(); return { @@ -51,12 +55,10 @@ export async function getAllNavItems() { export function removeNavItem(name: string) { const pipe = kv.pipeline(); pipe.srem( - `${process.env.HK_ENV}_config:navitemslist`, + includeEnvPrefix("config:navitemslist"), encodeURIComponent(name), ); - pipe.del( - `${process.env.HK_ENV}_config:navitems:${encodeURIComponent(name)}`, - ); + pipe.del(includeEnvPrefix(`config:navitems:${encodeURIComponent(name)}`)); return pipe.exec(); } From 2c338579c6ef6ceb1ba68d80091d0b8e7e083286 Mon Sep 17 00:00:00 2001 From: joshuasilva414 Date: Thu, 2 Jan 2025 21:22:48 -0600 Subject: [PATCH 5/6] fix setItem action --- apps/web/src/actions/admin/modify-nav-item.ts | 27 +++++++------------ .../src/actions/admin/registration-actions.ts | 25 ++++------------- apps/web/src/lib/utils/server/redis.ts | 1 + package.json | 2 +- 4 files changed, 16 insertions(+), 39 deletions(-) diff --git a/apps/web/src/actions/admin/modify-nav-item.ts b/apps/web/src/actions/admin/modify-nav-item.ts index 99185e69..a560dec7 100644 --- a/apps/web/src/actions/admin/modify-nav-item.ts +++ b/apps/web/src/actions/admin/modify-nav-item.ts @@ -16,18 +16,12 @@ const navAdminPage = "/admin/toggles/landing"; export const setItem = adminAction .schema(metadataSchema) .action(async ({ parsedInput: { name, url }, ctx: { user, userId } }) => { - await sadd( - "config:navitemslist", - encodeURIComponent(name), - ); - await hset( - "config:navitems:${encodeURIComponent(name)}", - { - url, - name, - enabled: true, - }, - ); + await sadd("config:navitemslist", encodeURIComponent(name)); + await hset(`config:navitems:${encodeURIComponent(name)}`, { + url, + name, + enabled: true, + }); revalidatePath(navAdminPage); return { success: true }; }); @@ -48,12 +42,9 @@ export const toggleItem = adminAction parsedInput: { name, statusToSet }, ctx: { user, userId }, }) => { - await hset( - "config:navitems:${encodeURIComponent(name)}", - { - enabled: statusToSet, - }, - ); + await hset(`config:navitems:${encodeURIComponent(name)}`, { + enabled: statusToSet, + }); revalidatePath(navAdminPage); return { success: true, itemStatus: statusToSet }; }, diff --git a/apps/web/src/actions/admin/registration-actions.ts b/apps/web/src/actions/admin/registration-actions.ts index 3cda7fa6..6c1b3fbb 100644 --- a/apps/web/src/actions/admin/registration-actions.ts +++ b/apps/web/src/actions/admin/registration-actions.ts @@ -16,10 +16,7 @@ const defaultRSVPLimitSchema = z.object({ export const toggleRegistrationEnabled = adminAction .schema(defaultRegistrationToggleSchema) .action(async ({ parsedInput: { enabled }, ctx: { user, userId } }) => { - await set( - "config:registration:registrationEnabled", - enabled, - ); + await set("config:registration:registrationEnabled", enabled); revalidatePath("/admin/toggles/registration"); return { success: true, statusSet: enabled }; }); @@ -27,10 +24,7 @@ export const toggleRegistrationEnabled = adminAction export const toggleRegistrationMessageEnabled = adminAction .schema(defaultRegistrationToggleSchema) .action(async ({ parsedInput: { enabled }, ctx: { user, userId } }) => { - await set( - "config:registration:registrationMessageEnabled", - enabled, - ); + await set("config:registration:registrationMessageEnabled", enabled); revalidatePath("/admin/toggles/registration"); return { success: true, statusSet: enabled }; }); @@ -38,10 +32,7 @@ export const toggleRegistrationMessageEnabled = adminAction export const toggleSecretRegistrationEnabled = adminAction .schema(defaultRegistrationToggleSchema) .action(async ({ parsedInput: { enabled }, ctx: { user, userId } }) => { - await set( - "config:registration:secretRegistrationEnabled", - enabled, - ); + await set("config:registration:secretRegistrationEnabled", enabled); revalidatePath("/admin/toggles/registration"); return { success: true, statusSet: enabled }; }); @@ -49,10 +40,7 @@ export const toggleSecretRegistrationEnabled = adminAction export const toggleRSVPs = adminAction .schema(defaultRegistrationToggleSchema) .action(async ({ parsedInput: { enabled }, ctx: { user, userId } }) => { - await set( - "config:registration:allowRSVPs", - enabled, - ); + await set("config:registration:allowRSVPs", enabled); revalidatePath("/admin/toggles/registration"); return { success: true, statusSet: enabled }; }); @@ -60,10 +48,7 @@ export const toggleRSVPs = adminAction export const setRSVPLimit = adminAction .schema(defaultRSVPLimitSchema) .action(async ({ parsedInput: { rsvpLimit }, ctx: { user, userId } }) => { - await set( - "config:registration:maxRSVPs", - rsvpLimit, - ); + await set("config:registration:maxRSVPs", rsvpLimit); revalidatePath("/admin/toggles/registration"); return { success: true, statusSet: rsvpLimit }; }); diff --git a/apps/web/src/lib/utils/server/redis.ts b/apps/web/src/lib/utils/server/redis.ts index 3339c109..4fe8d40e 100644 --- a/apps/web/src/lib/utils/server/redis.ts +++ b/apps/web/src/lib/utils/server/redis.ts @@ -53,6 +53,7 @@ export async function getAllNavItems() { } export function removeNavItem(name: string) { + console.log("Removing: ", includeEnvPrefix("config:navitemslist")); const pipe = kv.pipeline(); pipe.srem( includeEnvPrefix("config:navitemslist"), diff --git a/package.json b/package.json index ed954ddf..e0144114 100644 --- a/package.json +++ b/package.json @@ -21,7 +21,7 @@ "prettier": "^3.3.3", "turbo": "^2.0.9" }, - "packageManager": "pnpm@8.3.1", + "packageManager": "pnpm@8.3.1+sha512.d264f6640bf4f09de7cfcc547568515bcf0613cf485a03e8ff16616fa69c4172b6f9a0a2925ee44fb060df565c9c9a8eaf061749e77af318cb77f6684a7051f3", "name": "hackkit", "dependencies": { "prettier-plugin-tailwindcss": "^0.6.5" From 1f1f46e21570340b91ecf5a835206bbd563bd786 Mon Sep 17 00:00:00 2001 From: joshuasilva414 Date: Fri, 3 Jan 2025 11:05:04 -0600 Subject: [PATCH 6/6] rename redis functions for clarification --- apps/web/src/actions/admin/modify-nav-item.ts | 8 ++++---- .../src/actions/admin/registration-actions.ts | 18 ++++++++++++------ .../app/admin/toggles/registration/page.tsx | 4 ++-- apps/web/src/app/register/page.tsx | 4 ++-- apps/web/src/app/rsvp/page.tsx | 6 +++--- .../src/app/sign-up/[[...sign-up]]/page.tsx | 4 ++-- apps/web/src/lib/utils/server/redis.ts | 10 +++++----- 7 files changed, 30 insertions(+), 24 deletions(-) diff --git a/apps/web/src/actions/admin/modify-nav-item.ts b/apps/web/src/actions/admin/modify-nav-item.ts index a560dec7..2b6b05ad 100644 --- a/apps/web/src/actions/admin/modify-nav-item.ts +++ b/apps/web/src/actions/admin/modify-nav-item.ts @@ -2,7 +2,7 @@ import { z } from "zod"; import { adminAction } from "@/lib/safe-action"; -import { sadd, hset, removeNavItem } from "@/lib/utils/server/redis"; +import { redisSAdd, redisHSet, removeNavItem } from "@/lib/utils/server/redis"; import { revalidatePath } from "next/cache"; const metadataSchema = z.object({ @@ -16,8 +16,8 @@ const navAdminPage = "/admin/toggles/landing"; export const setItem = adminAction .schema(metadataSchema) .action(async ({ parsedInput: { name, url }, ctx: { user, userId } }) => { - await sadd("config:navitemslist", encodeURIComponent(name)); - await hset(`config:navitems:${encodeURIComponent(name)}`, { + await redisSAdd("config:navitemslist", encodeURIComponent(name)); + await redisHSet(`config:navitems:${encodeURIComponent(name)}`, { url, name, enabled: true, @@ -42,7 +42,7 @@ export const toggleItem = adminAction parsedInput: { name, statusToSet }, ctx: { user, userId }, }) => { - await hset(`config:navitems:${encodeURIComponent(name)}`, { + await redisHSet(`config:navitems:${encodeURIComponent(name)}`, { enabled: statusToSet, }); revalidatePath(navAdminPage); diff --git a/apps/web/src/actions/admin/registration-actions.ts b/apps/web/src/actions/admin/registration-actions.ts index 6c1b3fbb..1d069199 100644 --- a/apps/web/src/actions/admin/registration-actions.ts +++ b/apps/web/src/actions/admin/registration-actions.ts @@ -2,7 +2,7 @@ import { z } from "zod"; import { adminAction } from "@/lib/safe-action"; -import { set } from "@/lib/utils/server/redis"; +import { redisSet } from "@/lib/utils/server/redis"; import { revalidatePath } from "next/cache"; const defaultRegistrationToggleSchema = z.object({ @@ -16,7 +16,7 @@ const defaultRSVPLimitSchema = z.object({ export const toggleRegistrationEnabled = adminAction .schema(defaultRegistrationToggleSchema) .action(async ({ parsedInput: { enabled }, ctx: { user, userId } }) => { - await set("config:registration:registrationEnabled", enabled); + await redisSet("config:registration:registrationEnabled", enabled); revalidatePath("/admin/toggles/registration"); return { success: true, statusSet: enabled }; }); @@ -24,7 +24,10 @@ export const toggleRegistrationEnabled = adminAction export const toggleRegistrationMessageEnabled = adminAction .schema(defaultRegistrationToggleSchema) .action(async ({ parsedInput: { enabled }, ctx: { user, userId } }) => { - await set("config:registration:registrationMessageEnabled", enabled); + await redisSet( + "config:registration:registrationMessageEnabled", + enabled, + ); revalidatePath("/admin/toggles/registration"); return { success: true, statusSet: enabled }; }); @@ -32,7 +35,10 @@ export const toggleRegistrationMessageEnabled = adminAction export const toggleSecretRegistrationEnabled = adminAction .schema(defaultRegistrationToggleSchema) .action(async ({ parsedInput: { enabled }, ctx: { user, userId } }) => { - await set("config:registration:secretRegistrationEnabled", enabled); + await redisSet( + "config:registration:secretRegistrationEnabled", + enabled, + ); revalidatePath("/admin/toggles/registration"); return { success: true, statusSet: enabled }; }); @@ -40,7 +46,7 @@ export const toggleSecretRegistrationEnabled = adminAction export const toggleRSVPs = adminAction .schema(defaultRegistrationToggleSchema) .action(async ({ parsedInput: { enabled }, ctx: { user, userId } }) => { - await set("config:registration:allowRSVPs", enabled); + await redisSet("config:registration:allowRSVPs", enabled); revalidatePath("/admin/toggles/registration"); return { success: true, statusSet: enabled }; }); @@ -48,7 +54,7 @@ export const toggleRSVPs = adminAction export const setRSVPLimit = adminAction .schema(defaultRSVPLimitSchema) .action(async ({ parsedInput: { rsvpLimit }, ctx: { user, userId } }) => { - await set("config:registration:maxRSVPs", rsvpLimit); + await redisSet("config:registration:maxRSVPs", rsvpLimit); revalidatePath("/admin/toggles/registration"); return { success: true, statusSet: rsvpLimit }; }); diff --git a/apps/web/src/app/admin/toggles/registration/page.tsx b/apps/web/src/app/admin/toggles/registration/page.tsx index 40edb8cd..841fe64d 100644 --- a/apps/web/src/app/admin/toggles/registration/page.tsx +++ b/apps/web/src/app/admin/toggles/registration/page.tsx @@ -1,5 +1,5 @@ import { RegistrationToggles } from "@/components/admin/toggles/RegistrationSettings"; -import { mget } from "@/lib/utils/server/redis"; +import { redisMGet } from "@/lib/utils/server/redis"; import { parseRedisBoolean, parseRedisNumber } from "@/lib/utils/server/redis"; import c from "config"; @@ -9,7 +9,7 @@ export default async function Page() { defaultSecretRegistrationEnabled, defaultRSVPsEnabled, defaultRSVPLimit, - ]: (string | null)[] = await mget( + ]: (string | null)[] = await redisMGet( "config:registration:registrationEnabled", "config:registration:secretRegistrationEnabled", "config:registration:allowRSVPs", diff --git a/apps/web/src/app/register/page.tsx b/apps/web/src/app/register/page.tsx index 5ea9210b..26a24250 100644 --- a/apps/web/src/app/register/page.tsx +++ b/apps/web/src/app/register/page.tsx @@ -4,7 +4,7 @@ import { auth, currentUser } from "@clerk/nextjs"; import { redirect } from "next/navigation"; import Navbar from "@/components/shared/Navbar"; import Link from "next/link"; -import { mget } from "@/lib/utils/server/redis"; +import { redisMGet } from "@/lib/utils/server/redis"; import { parseRedisBoolean } from "@/lib/utils/server/redis"; import { Button } from "@/components/shadcn/ui/button"; import { getUser } from "db/functions"; @@ -22,7 +22,7 @@ export default async function Page() { const [defaultRegistrationEnabled, defaultSecretRegistrationEnabled]: ( | string | null - )[] = await mget( + )[] = await redisMGet( "config:registration:registrationEnabled", "config:registration:secretRegistrationEnabled", ); diff --git a/apps/web/src/app/rsvp/page.tsx b/apps/web/src/app/rsvp/page.tsx index b55a66e8..841f315c 100644 --- a/apps/web/src/app/rsvp/page.tsx +++ b/apps/web/src/app/rsvp/page.tsx @@ -10,7 +10,7 @@ import { SignedOut, RedirectToSignIn } from "@clerk/nextjs"; import { parseRedisBoolean, parseRedisNumber, - get, + redisGet, } from "@/lib/utils/server/redis"; import Link from "next/link"; import { Button } from "@/components/shadcn/ui/button"; @@ -44,7 +44,7 @@ export default async function RsvpPage({ } const rsvpEnabled = parseRedisBoolean( - (await get("config:registration:allowRSVPs")) as + (await redisGet("config:registration:allowRSVPs")) as | string | boolean | null @@ -56,7 +56,7 @@ export default async function RsvpPage({ if (rsvpEnabled === true) { const rsvpLimit = parseRedisNumber( - await get("config:registration:maxRSVPs"), + await redisGet("config:registration:maxRSVPs"), c.rsvpDefaultLimit, ); diff --git a/apps/web/src/app/sign-up/[[...sign-up]]/page.tsx b/apps/web/src/app/sign-up/[[...sign-up]]/page.tsx index 20111d04..49244c2e 100644 --- a/apps/web/src/app/sign-up/[[...sign-up]]/page.tsx +++ b/apps/web/src/app/sign-up/[[...sign-up]]/page.tsx @@ -1,5 +1,5 @@ import { SignUp } from "@clerk/nextjs"; -import { mget } from "@/lib/utils/server/redis"; +import { redisMGet } from "@/lib/utils/server/redis"; import { parseRedisBoolean } from "@/lib/utils/server/redis"; import c from "config"; import { Button } from "@/components/shadcn/ui/button"; @@ -9,7 +9,7 @@ export default async function Page() { const [defaultRegistrationEnabled, defaultSecretRegistrationEnabled]: ( | string | null - )[] = await mget( + )[] = await redisMGet( "config:registration:registrationEnabled", "config:registration:secretRegistrationEnabled", ); diff --git a/apps/web/src/lib/utils/server/redis.ts b/apps/web/src/lib/utils/server/redis.ts index 4fe8d40e..90b8d6ba 100644 --- a/apps/web/src/lib/utils/server/redis.ts +++ b/apps/web/src/lib/utils/server/redis.ts @@ -5,29 +5,29 @@ export function includeEnvPrefix(key: string) { return `${process.env.HK_ENV}_${key}`; } -export async function sadd(key: string, value: string): Promise { +export async function redisSAdd(key: string, value: string): Promise { return kv.sadd(includeEnvPrefix(key), value); } -export async function hset( +export async function redisHSet( key: string, value: Record, ): Promise { return kv.hset(includeEnvPrefix(key), value); } -export async function set( +export async function redisSet( key: string, value: TData, ): Promise { return kv.set(includeEnvPrefix(key), value); } -export async function get(key: string): Promise { +export async function redisGet(key: string): Promise { return kv.get(includeEnvPrefix(key)); } -export async function mget(...keys: string[]): Promise { +export async function redisMGet(...keys: string[]): Promise { return kv.mget(keys.map(includeEnvPrefix)); }