mirror of
https://github.com/hanzo-apps/dataroom.git
synced 2026-10-30 14:47:36 +00:00
The client was already @hanzo/kv; only the vocabulary was still Redis. Every module, symbol and comment now says what it connects to: lib/redis.ts -> lib/kv.ts (exports kv, lockKv) lib/redis-job-store.ts -> lib/kv-job-store.ts (KvJobStore) lib/redis-download-job-store.ts -> lib/kv-download-job-store.ts lib/files/tus-redis-locker.ts -> lib/files/tus-kv-locker.ts (KvLocker, KvLock) lib/api/domains/redis.ts -> lib/api/domains/kv.ts (getKey) lib/redis/ -> lib/kv-queue/ KV_URL is now the only endpoint variable — the REDIS_URL fallback and the redis://localhost default are gone, and the default scheme is kv://, which @hanzo/kv parses natively (utils/index.js). .env.example gained the KV_URL it never documented, and lost UPSTASH_REDIS_REST_LOCKER_URL/TOKEN: nothing has read those since the client changed — the locker opens a second connection to the same KV, so there is no second endpoint to configure. The second connection is `lockKv`, not `locker`: both tus routes already have a local `const locker = new KvLocker(...)`, so naming the client `locker` made the lock take itself as its own client. Verified against the repo's own gate (npx tsc --noEmit): 100 errors before and after, 0 introduced, compared set-wise by file:line:code. Behaviour is untouched — this is naming, one connection string, and dead config. Co-authored-by: Hanzo Dev <[email protected]>
42 lines
959 B
TypeScript
42 lines
959 B
TypeScript
import { kv } from "@/lib/kv";
|
|
|
|
const DOMAIN_REDIRECT_PREFIX = "domain:redirect";
|
|
|
|
const PLANS_WITH_REDIRECTS = new Set([
|
|
"business",
|
|
"datarooms",
|
|
"datarooms-plus",
|
|
"datarooms-premium",
|
|
]);
|
|
|
|
export function planSupportsRedirects(plan: string): boolean {
|
|
const normalized = plan.replace("+old", "");
|
|
return PLANS_WITH_REDIRECTS.has(normalized);
|
|
}
|
|
|
|
export function getKey(domain: string): string {
|
|
return `${DOMAIN_REDIRECT_PREFIX}:${domain.toLowerCase()}`;
|
|
}
|
|
|
|
export async function getDomainRedirectUrl(
|
|
domain: string,
|
|
): Promise<string | null> {
|
|
return kv.get<string>(getKey(domain));
|
|
}
|
|
|
|
export async function setDomainRedirectUrl(
|
|
domain: string,
|
|
redirectUrl: string | null,
|
|
): Promise<void> {
|
|
const key = getKey(domain);
|
|
if (redirectUrl) {
|
|
await kv.set(key, redirectUrl);
|
|
} else {
|
|
await kv.del(key);
|
|
}
|
|
}
|
|
|
|
export async function deleteDomainRedirectUrl(domain: string): Promise<void> {
|
|
await kv.del(getKey(domain));
|
|
}
|