import { nanoid } from 'nanoid'; import { invites } from '~~/drizzle/schema'; import { db } from '~~/server/lib/db'; const TOKEN_LENGTH = 32; /** Creates an invite link that lets one person register within a week. */ export default defineEventHandler(async (event) => { await protectAdminRoute(event); const [invite] = await db.insert(invites) .values({ token: nanoid(TOKEN_LENGTH), createdBy: event.context.user!.id as string, maxUses: 1, expiresAt: new Date(Date.now() + INVITE_LIFETIME_MS), }) .returning({ id: invites.id, token: invites.token, maxUses: invites.maxUses, uses: invites.uses, expiresAt: invites.expiresAt, createdAt: invites.createdAt, }); return invite!; });