import { CfnResource, Construct } from '@aws-cdk/core';
// eslint-disable-next-line @typescript-eslint/no-require-imports
import camelcaseKeys = require('camelcase-keys');
import { DatadogCredentials } from '../common/properties';

export interface DatadogDashboardProps {
  /** Credentials for the Datadog API */
  readonly datadogCredentials: DatadogCredentials;

  /** JSON string of the dashboard definition */
  readonly dashboardDefinition: string;
}

/**
 * Datadog Dashboard 1.0.0
 */
export class DatadogDashboard {
  constructor(scope: Construct, id: string, props: DatadogDashboardProps) {
    const cfnProperties = camelcaseKeys(props, {
      deep: true,
      pascalCase: true,
    });
    new CfnResource(scope, id, {
      type: 'Datadog::Dashboards::Dashboard',
      properties: { ...cfnProperties },
    });
  }
}