summaryrefslogtreecommitdiff
path: root/api/create-subscription.ts
blob: 70b1499f046a32144fd8d10f75ab2f97912fc82b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import type { VercelRequest, VercelResponse } from '@vercel/node';

import { sql } from '@vercel/postgres';
import { tableSubscriptions } from '_postgres';

export default async function handler(request: VercelRequest, response: VercelResponse) {
  const { subscriptionId, emailAddress }: Partial<RequestBody> = request.body;

  if (!subscriptionId) throw new Error('Missing parameter: subscriptionId.');
  if (!emailAddress) throw new Error('Missing parameter: emailAddress.');

  try {
    const result = await sql`
      INSERT INTO ${tableSubscriptions} (id, email_address)
      VALUES (${subscriptionId}, ${emailAddress})
    ;`;
    return response.status(200).json({ result });
  } catch (error) {
    return response.status(500).json({ error });
  }
}

type RequestBody = {
  subscriptionId: string,
  emailAddress: string,
};