Skip to content

Commit

Permalink
Move env key prefix to generic redis functions
Browse files Browse the repository at this point in the history
  • Loading branch information
joshuasilva414 committed Jan 2, 2025
1 parent c774463 commit 9407fd6
Show file tree
Hide file tree
Showing 7 changed files with 31 additions and 29 deletions.
6 changes: 3 additions & 3 deletions apps/web/src/actions/admin/modify-nav-item.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down Expand Up @@ -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,
},
Expand Down
10 changes: 5 additions & 5 deletions apps/web/src/actions/admin/registration-actions.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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");
Expand All @@ -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");
Expand All @@ -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");
Expand All @@ -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");
Expand All @@ -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");
Expand Down
8 changes: 4 additions & 4 deletions apps/web/src/app/admin/toggles/registration/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -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 (
Expand Down
4 changes: 2 additions & 2 deletions apps/web/src/app/register/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand Down
4 changes: 2 additions & 2 deletions apps/web/src/app/rsvp/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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,
);

Expand Down
4 changes: 2 additions & 2 deletions apps/web/src/app/sign-up/[[...sign-up]]/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand Down
24 changes: 13 additions & 11 deletions apps/web/src/lib/utils/server/redis.ts
Original file line number Diff line number Diff line change
@@ -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<number> {
return kv.sadd(key, value);
return kv.sadd(includeEnvPrefix(key), value);
}

export async function hset<TData>(
key: string,
value: Record<string, TData>,
): Promise<number> {
return kv.hset(key, value);
return kv.hset(includeEnvPrefix(key), value);
}

export async function set<TData>(
key: string,
value: TData,
): Promise<TData | "OK" | null> {
return kv.set<TData>(key, value);
return kv.set<TData>(includeEnvPrefix(key), value);
}

export async function get<TData>(key: string): Promise<TData | null> {
return kv.get<TData>(key);
return kv.get<TData>(includeEnvPrefix(key));
}

export async function mget<TData>(...keys: string[]): Promise<TData[]> {
return kv.mget<TData[]>(keys);
return kv.mget<TData[]>(keys.map(includeEnvPrefix));
}

export async function getAllNavItems() {
const keys = await kv.smembers<string[]>(
`${process.env.HK_ENV}_config:navitemslist`,
includeEnvPrefix("config:navitemslist"),
);
if (!keys || keys.length < 1) {
return {
Expand All @@ -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<NavItemToggleType[]>();
return {
Expand All @@ -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();
}

Expand Down

0 comments on commit 9407fd6

Please sign in to comment.