import * as ecs from 'aws-cdk-lib/aws-ecs';
import { Construct } from 'constructs';
import * as secretsmanager from 'aws-cdk-lib/aws-secretsmanager';

// Retrieve the secret from AWS Secrets Manager
export const studioApiServiceOnlySecret = (scope: Construct, accountStage: string) => {
  if (accountStage === 'staging') {
    return secretsmanager.Secret.fromSecretAttributes(scope, 'studio-api-service-only-secret', {
      secretCompleteArn: 'arn:aws:secretsmanager:us-east-2:590183763515:secret:studio-api-service-only-secret-YdL5ne',
    });
  }
  if (accountStage === 'prod') {
    return secretsmanager.Secret.fromSecretAttributes(scope, 'studio-api-service-only-secret', {
      secretCompleteArn: 'arn:aws:secretsmanager:us-east-2:734185074900:secret:studio-api-service-only-secret-KosYrY',
    });
  }
  return secretsmanager.Secret.fromSecretAttributes(scope, 'studio-api-service-only-secret', {
    secretCompleteArn: 'arn:aws:secretsmanager:us-east-2:734185074900:secret:studio-api-service-only-secret-YdL5ne',
  });
};

export const studioApiServiceOnlySecrets = (scope: Construct, accountStage: string) => {
  const secret = studioApiServiceOnlySecret(scope, accountStage);
  let secrets = {
    ROYAL_API_KEY: ecs.Secret.fromSecretsManager(secret, 'ROYAL_API_KEY'),
    ML_REDIS_URL: ecs.Secret.fromSecretsManager(secret, 'ML_REDIS_URL'),
    ES_CLIP_HTTP_ADDR: ecs.Secret.fromSecretsManager(secret, 'ES_CLIP_HTTP_ADDR'),
    ES_CLIP_API_KEY: ecs.Secret.fromSecretsManager(secret, 'ES_CLIP_API_KEY'),
    READ_REPLICA_DATABASE_URL: ecs.Secret.fromSecretsManager(secret, 'REPLICA_DATABASE_URL'),
    META_HEAVY_DYNAMODB_ENDPOINT_URL: ecs.Secret.fromSecretsManager(secret, 'META_HEAVY_DYNAMODB_ENDPOINT_URL'),
    ALEXA_CLIENT_ID: ecs.Secret.fromSecretsManager(secret, 'ALEXA_CLIENT_ID'),
    ALEXA_CLIENT_SECRET: ecs.Secret.fromSecretsManager(secret, 'ALEXA_CLIENT_SECRET'),
    VALKEY_URL: ecs.Secret.fromSecretsManager(secret, 'VALKEY_URL'),
    CF_SECRET_TURNSTILE_KEY: ecs.Secret.fromSecretsManager(secret, 'CF_SECRET_TURNSTILE_KEY'),
    CF_SECRET_TURNSTILE_KEY_AUTH: ecs.Secret.fromSecretsManager(secret, 'CF_SECRET_TURNSTILE_KEY_AUTH'),
    REDIS_RECS_URL: ecs.Secret.fromSecretsManager(secret, 'REDIS_RECS_URL'),
    ANROK_API_KEY: ecs.Secret.fromSecretsManager(secret, 'ANROK_API_KEY'),
    BYPASS_CAPTCHA_TOKEN: ecs.Secret.fromSecretsManager(secret, 'BYPASS_CAPTCHA_TOKEN'),
    SEMANTIC_CACHE_MEMORYDB_URL: ecs.Secret.fromSecretsManager(secret, 'SEMANTIC_CACHE_MEMORYDB_URL'),
  } as { [key: string]: ecs.Secret };

  if (accountStage === 'prod') {
    secrets['RATELIMIT_VALKEY_URL'] = ecs.Secret.fromSecretsManager(secret, 'RATELIMIT_VALKEY_URL');
    secrets['SESSION_VALKEY_URL'] = ecs.Secret.fromSecretsManager(secret, 'SESSION_VALKEY_URL');
    secrets['LISTEN_HISTORY_VALKEY_URL'] = ecs.Secret.fromSecretsManager(secret, 'LISTEN_HISTORY_VALKEY_URL');
    secrets['CLIP_VALKEY_URL'] = ecs.Secret.fromSecretsManager(secret, 'CLIP_VALKEY_URL');
    secrets['COMMENTS_VALKEY_URL'] = ecs.Secret.fromSecretsManager(secret, 'COMMENTS_VALKEY_URL');
    secrets['USER_HOOK_WATCH_HISTORY_VALKEY_URL'] = ecs.Secret.fromSecretsManager(secret, 'USER_HOOK_WATCH_HISTORY_VALKEY_URL');
    secrets['USER_HOOK_LISTEN_HISTORY_VALKEY_URL'] = ecs.Secret.fromSecretsManager(secret, 'USER_HOOK_LISTEN_HISTORY_VALKEY_URL');
    secrets['PERSONALIZED_PROMPT_VALKEY_URL'] = ecs.Secret.fromSecretsManager(secret, 'PERSONALIZED_PROMPT_VALKEY_URL');
  }
  return secrets;
};
