All files / lib/lambda checkIdentifierUsage.ts

100% Statements 12/12
100% Branches 4/4
100% Functions 1/1
100% Lines 12/12

Press n or j to go to the next uncovered block, b, p or k for the previous block.

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 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71                                1x 10x   10x 2x                 8x 8x   7x 5x                       2x                   1x 1x                   1x        
import { APIGatewayEvent } from "aws-lambda";
import { checkIdentifierUsage } from "libs/api/package/checkIdentifierUsage";
import { response } from "libs/handler-lib";
 
import { nonAuthenticatedMiddy } from "./middleware/handlers";
 
/**
 * Handler for checking identifier usage
 * GET /checkIdentifierUsage?id={identifier}
 *
 * Returns:
 * - 200: {"inUse": false} if identifier is available
 * - 200: {"inUse": true, "system": "<origin>"} if identifier is in use
 * - 400: Error if id parameter is missing
 * - 500: Error on internal server error
 */
export const checkIdentifierUsageHandler = async (event: APIGatewayEvent) => {
  const identifier = event.queryStringParameters?.id;
 
  if (!identifier) {
    return response(
      {
        statusCode: 400,
        body: { message: "Missing required parameter: id" },
      },
      { disableCors: false },
    );
  }
 
  try {
    const result = await checkIdentifierUsage(identifier);
 
    if (result.exists) {
      return response(
        {
          statusCode: 200,
          body: {
            inUse: true,
            system: result.origin,
          },
        },
        { disableCors: false },
      );
    }
 
    return response(
      {
        statusCode: 200,
        body: {
          inUse: false,
        },
      },
      { disableCors: false },
    );
  } catch (error) {
    console.error("Error in checkIdentifierUsage:", error);
    return response(
      {
        statusCode: 500,
        body: { message: "Internal server error" },
      },
      { disableCors: false },
    );
  }
};
 
export const handler = nonAuthenticatedMiddy({
  opensearch: true,
  body: false,
}).handler(checkIdentifierUsageHandler);