module "lambda_dynamo_cli" {
  source = "git@github.com:theorchard/terraform-lambda.git//?ref=5.3.0"

  environment                                    = var.environment
  lambda_name                                    = "lambda-${var.service_name}-dynamo-cli"
  application_family                             = var.application_family
  lambda_description                             = "Stores and retrieves offboarding snapshots in DynamoDB"
  use_container_image                            = true
  datadog_advanced_enabled                       = true
  vpc_enabled                                    = false
  lambda_function_timeout                        = 300
  lambda_function_reserved_concurrent_executions = 10
  splitio_enabled                                = false
  zappa_s3_policy_enabled                        = false
  iam_managed_policy_attachments = [
    aws_iam_policy.dynamo_cli_dynamodb_policy.arn
  ]

  lambda_function_environment_variables = {
    Environment         = var.environment
    SERVICE_NAME        = "lambda-${var.service_name}-dynamo-cli"
    SENTRY_DSN          = module.sentry_project_dynamo_cli.sentry_key_dsn_public_output
    DYNAMODB_TABLE_NAME = module.offboarding_snapshots.aws_dynamodb_table_id
  }
}

module "sentry_project_dynamo_cli" {
  source = "git@github.com:theorchard/terraform-sentry.git//?ref=5.0.0"

  environment        = var.environment
  platform           = "python"
  service_name       = "lambda-${var.service_name}-dynamo-cli"
  teams              = [var.environment]
  application_family = var.application_family
}

module "offboarding_snapshots" {
  source = "git@github.com:theorchard/terraform-dynamodb.git//?ref=3.3.1"

  env                   = var.environment
  table_name            = "${var.service_name}-snapshots"
  application_family    = var.application_family
  use_custom_table_name = true
  custom_table_name     = "${var.environment}-${var.service_name}-snapshots"
  hash_key              = "ticket_id"
  use_on_demand         = true
  ttl_enabled           = true
  ttl_attribute_name    = "ttl"

  attribute = [
    { name = "ticket_id", type = "S" }
  ]
}

data "aws_iam_policy_document" "dynamo_cli_dynamodb_policy_document" {
  statement {
    actions = [
      "dynamodb:PutItem",
      "dynamodb:GetItem",
      "dynamodb:DeleteItem",
    ]
    resources = [
      module.offboarding_snapshots.aws_dynamodb_table_arn,
    ]
  }
}

resource "aws_iam_policy" "dynamo_cli_dynamodb_policy" {
  name   = "${var.environment}-${var.service_name}-dynamo-cli-dynamodb-policy"
  policy = data.aws_iam_policy_document.dynamo_cli_dynamodb_policy_document.json
}
