import {
  CloudFrontClient,
  CreateInvalidationCommand,
} from '@aws-sdk/client-cloudfront';
import { Injectable } from '@nestjs/common';
import { ConfigService } from '@nestjs/config';

@Injectable()
export class CfnService {
  private client: CloudFrontClient;
  constructor(private configService: ConfigService) {
    this.client = new CloudFrontClient();
  }

  async invalidate(path: string) {
    const command = new CreateInvalidationCommand({
      DistributionId: this.configService.get('cfn.distributionId'),
      InvalidationBatch: {
        CallerReference: Date.now().toString(),
        Paths: {
          Quantity: 1,
          Items: ['/' + path],
        },
      },
    });

    await this.client.send(command);
  }
}
