import { APIGatewayProxyEvent, APIGatewayProxyResult } from "aws-lambda";
import addMinutes from "date-fns/addMinutes";
import isAfter from "date-fns/isAfter";
import { bareSuccessResponse, dynamo, headers } from "../lambda-helpers";

export const handler = async (
  event: APIGatewayProxyEvent
): Promise<APIGatewayProxyResult> => {
  const S = event.queryStringParameters?.state || '';
  const key = {
    TableName: "RoamJSAuth",
    Key: { id: { S } },
  };
  return dynamo
    .getItem(key)
    .promise()
    .then((r) => {
      if (r.Item) {
        if (isAfter(new Date(), addMinutes(new Date(r.Item.date.S), 10))) {
          return dynamo
            .deleteItem(key)
            .promise()
            .then(() => bareSuccessResponse(event));
        } else {
          return {
            statusCode: 200,
            body: JSON.stringify({ success: false }),
            headers: headers(event),
          };
        }
      } else {
        return bareSuccessResponse(event);
      }
    })
    .catch((e) => ({
      statusCode: 500,
      body: e.message,
      headers: headers(event),
    }));
};