import { makeIdempotent, IdempotencyConfig } from '@aws-lambda-powertools/idempotency';
import { DynamoDBPersistenceLayer } from '@aws-lambda-powertools/idempotency/dynamodb';
import type { APIGatewayEvent } from 'aws-lambda';
import type { Context } from 'aws-lambda';


const persistenceStore = new DynamoDBPersistenceLayer({
  tableName: process.env.IDEMPOTENCY_TABLE_NAME!,
});

export const handler = makeIdempotent(
  async (event: APIGatewayEvent, context: Context) => {
    // Your business logic here

    return {
      message: 'success',
      statusCode: 200,
    };
  },
  {
    persistenceStore,
    config: new IdempotencyConfig({
        eventKeyJmesPath: 'powertools_json(body).["id"]',
        expiresAfterSeconds: 86400 // EventBridge might retry for up to 24 hours
    })
  }
);