import * as cdk from 'aws-cdk-lib';
import { Construct } from 'constructs';
import { createEventLoggerKinesis } from './kinesis/event-logger-kinesis';
import { createRealtimeEventLoggerKinesis } from './kinesis/realtime-event-logger-kinesis';
import { createEventLoggerFirehose } from './firehose/event-logger-firehose';
import { createRealtimeEventLoggerFirehose } from './firehose/realtime-event-logger-firehose';

export interface ModalEventStreamStackProps extends cdk.StackProps {
  account: string;
  region: string;
  accountStage: string;
}

export class ModalEventStreamStack extends cdk.Stack {
  constructor(scope: Construct, id: string, props: ModalEventStreamStackProps) {
    super(scope, id, props);

    const eventLoggerKinesis = createEventLoggerKinesis(this, props.accountStage, props.region);
    const eventLoggerFirehose = createEventLoggerFirehose(
      this,
      eventLoggerKinesis.streamArn,
      props.account,
      props.accountStage,
      props.region
    );

    const realtimeEventLoggerKinesis = createRealtimeEventLoggerKinesis(this, props.accountStage, props.region);
    const realtimeEventLoggerFirehose = createRealtimeEventLoggerFirehose(
      this,
      realtimeEventLoggerKinesis.streamArn,
      props.account,
      props.accountStage,
      props.region
    );
  }
}

