diff options
| author | 2023-04-17 18:53:55 +0000 | |
|---|---|---|
| committer | 2023-04-17 18:53:55 +0000 | |
| commit | b135aac8531c1e1488147ad8c6f98eddbdbe0c99 (patch) | |
| tree | 189e9fea7109564d63207e231d5b0e5624243072 /pages/api/v1/store.ts | |
| download | HydroRoll-b135aac8531c1e1488147ad8c6f98eddbdbe0c99.tar.gz HydroRoll-b135aac8531c1e1488147ad8c6f98eddbdbe0c99.zip | |
Initial commit
Created from https://vercel.com/new
Diffstat (limited to 'pages/api/v1/store.ts')
| -rw-r--r-- | pages/api/v1/store.ts | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/pages/api/v1/store.ts b/pages/api/v1/store.ts new file mode 100644 index 0000000..c35e9b4 --- /dev/null +++ b/pages/api/v1/store.ts @@ -0,0 +1,38 @@ +import { NextRequest, NextResponse } from "next/server"; +import { Redis } from "@upstash/redis"; +import { generateId } from "pkg/id"; + +type Request = { + encrypted: string; + ttl?: number; + reads: number; + iv: string; +}; + +const redis = Redis.fromEnv(); +export default async function handler(req: NextRequest) { + const { encrypted, ttl, reads, iv } = (await req.json()) as Request; + + const id = generateId(); + const key = ["envshare", id].join(":"); + + const tx = redis.multi(); + + tx.hset(key, { + remainingReads: reads > 0 ? reads : null, + encrypted, + iv, + }); + if (ttl) { + tx.expire(key, ttl); + } + tx.incr("envshare:metrics:writes"); + + await tx.exec(); + + return NextResponse.json({ id }); +} + +export const config = { + runtime: "edge", +}; |
