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 BackendEventStreamStackProps extends cdk.StackProps {
    account: string;
    region: string;
    accountStage: string;
}

export class BackendEventStreamStack extends cdk.Stack {

  constructor(scope: Construct, id: string, props: BackendEventStreamStackProps) {
    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);
  }
}