# Terraform backends cannot contain interpolations
terraform {
  backend "s3" {
    bucket  = "orcd-terraform-state"
    key     = "uat/kafka-infra/kafka-cluster/topics/terraform.tfstate"
    region  = "us-east-1"
    encrypt = "true"
  }

  required_providers {
    kafka = {
      source  = "mongey/kafka"
      version = ">= 0.2.10"
    }
  }
}

provider "kafka" {
  bootstrap_servers = var.bootstrap_servers
  tls_enabled       = true
}

resource "kafka_topic" "event_nr_contribution_metadata" {
  name               = "event.nr.contribution.metadata"
  replication_factor = var.kafka_minimum_replication_factor
  partitions         = 50
  config = {
    "max.message.bytes" = "15728640"
    "retention.ms"      = "604800000"
    "min.insync.replicas" = "2"
  }
}

resource "kafka_topic" "graphql_subscription_abacus_account_payee_resync_payment_readiness" {
  name               = "graphql.subscription.abacusAccountPayeeResyncPaymentReadiness"
  replication_factor = var.kafka_minimum_replication_factor
  partitions         = 3
  config = {
    "retention.ms" = "86400000"
    "min.insync.replicas" = "2"
  }
}

resource "kafka_topic" "graphql_subscription_abacus_account_payee_resunc_eligibility" {
  name               = "graphql.subscription.abacusAccountPayeeResyncEligibility"
  replication_factor = var.kafka_minimum_replication_factor
  partitions         = 3
  config = {
    "retention.ms" = "86400000"
    "min.insync.replicas" = "2"
  }
}

resource "kafka_topic" "graphql_subscription_abacus_account_payee_payoneer_released" {
  name               = "graphql.subscription.abacusAccountPayeePayoneerReleased"
  replication_factor = var.kafka_minimum_replication_factor
  partitions         = 3
  config = {
    "retention.ms" = "86400000"
    "min.insync.replicas" = "2"
  }
}

resource "kafka_topic" "graphql_subscription_abacus_account_tax_info_updated" {
  name               = "graphql.subscription.abacusAccountTaxInfoUpdated"
  replication_factor = var.kafka_minimum_replication_factor
  partitions         = 3
  config = {
    "retention.ms" = "86400000"
    "min.insync.replicas" = "2"
  }
}

resource "kafka_topic" "graphql_subscription_abacus_account_payee_payoneer_wform_collected" {
  name               = "graphql.subscription.abacusAccountPayeePayoneerWFormCollected"
  replication_factor = var.kafka_minimum_replication_factor
  partitions         = 3
  config = {
    "retention.ms" = "86400000"
    "min.insync.replicas" = "2"
  }
}

resource "kafka_topic" "graphql_subscription_abacus_account_payee_vat_info_saved" {
  name               = "graphql.subscription.abacusAccountPayeeVATInfoSaved"
  replication_factor = var.kafka_minimum_replication_factor
  partitions         = 3
  config = {
    "retention.ms" = "86400000"
    "min.insync.replicas" = "2"
  }
}

resource "kafka_topic" "event_payee_program_move" {
  name               = "event.payee.programMove"
  replication_factor = var.kafka_minimum_replication_factor
  partitions         = 3
  config = {
    "retention.ms" = "86400000"
    "min.insync.replicas" = "2"
  }
}

resource "kafka_topic" "graphql_subscription_abacus_account_payee_payoneer_status_updated" {
  name               = "graphql.subscription.abacusAccountPayeePayoneerStatusUpdated"
  replication_factor = var.kafka_minimum_replication_factor
  partitions         = 3
  config = {
    "retention.ms" = "86400000"
    "min.insync.replicas" = "2"
  }
}

resource "kafka_topic" "graphql_subscription_abacus_account_payee_payoneer_bank_details_changed" {
  name               = "graphql.subscription.abacusAccountPayeePayoneerBankDetailsChanged"
  replication_factor = var.kafka_minimum_replication_factor
  partitions         = 3
  config = {
    "retention.ms" = "86400000"
    "min.insync.replicas" = "2"
  }
}

resource "kafka_topic" "graphql_subscription_abacus_account_payee_payoneer_details_changed" {
  name               = "graphql.subscription.abacusAccountPayeePayoneerDetailsChanged"
  replication_factor = var.kafka_minimum_replication_factor
  partitions         = 3
  config = {
    "retention.ms" = "86400000"
    "min.insync.replicas" = "2"
  }
}
