resource "kafka_topic" "dlq_musicGraph_mysql_nr" {
  name               = "dlq.musicGraph.mysql.nr"
  replication_factor = var.kafka_minimum_replication_factor
  partitions         = 1
  config = {
    "retention.ms" = "72000000"
    "min.insync.replicas" = "2"
  }
}

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" "event_nr_contribution_version" {
  name               = "event.nr.contribution.version"
  replication_factor = var.kafka_minimum_replication_factor
  partitions         = 50
  config = {
    "max.message.bytes" = "15728640"
    "retention.ms"      = "86400000"
    "min.insync.replicas" = "2"
  }
}

resource "kafka_topic" "event_nr_delivery_order_status" {
  name               = "event.nr.delivery.orderStatus"
  replication_factor = var.kafka_minimum_replication_factor
  partitions         = 10
  config = {
    "max.message.bytes" = "15728640"
    "retention.ms"      = "604800000"
    "min.insync.replicas" = "2"
  }
}

resource "kafka_topic" "event_nr_ownership_ingest_reporting" {
  name               = "event.nr.ownership.ingest.reporting"
  replication_factor = var.kafka_minimum_replication_factor
  partitions         = 30
  config = {
    "max.message.bytes" = "15728640"
    "retention.ms" = "604800000"
    "min.insync.replicas" = "2"
  }
}


# DLQ for DynamoDB Sink connector
resource "kafka_topic" "dlq_ddb_sink_nr_ownership_ingest_reporting" {
  name               = "dlq.ddb.nr.ownership.ingest.reporting"
  replication_factor = var.kafka_minimum_replication_factor
  partitions         = 1
  config = {
    "retention.ms" = "72000000"
    "min.insync.replicas" = "2"
  }
}

resource "kafka_topic" "event_nr_ownership_delivery_order_message" {
  name               = "event.nr.ownership.delivery.order.message"
  replication_factor = var.kafka_minimum_replication_factor
  partitions         = 10
  config = {
    "max.message.bytes" = "15728640"
    "retention.ms"      = "3600000"
    "min.insync.replicas" = "2"
  }
}

resource "kafka_topic" "event_table_nr_ownership_file_uploads" {
  name               = "event.table.nr.ownership.file.uploads"
  replication_factor = var.kafka_minimum_replication_factor
  partitions         = 1
  config = {
    "max.message.bytes" = "15728640"
    "retention.ms" = "72000000"
    "min.insync.replicas" = "2"
  }
}

resource "kafka_topic" "event_table_nr_ownership_upload_latest" {
  name               = "event.table.nr.ownership.upload.latest"
  replication_factor = var.kafka_minimum_replication_factor
  partitions         = 1
  config = {
    "max.message.bytes" = "15728640"
    "retention.ms" = "72000000"
    "min.insync.replicas" = "2"
  }
}

# NrGraph

## Labels
resource "kafka_topic" "cdc_nrgraph_nr_contribution" {
  name               = "cdc.nrGraph.nrContribution"
  replication_factor = var.kafka_minimum_replication_factor
  partitions         = 1
  config = {
    "max.message.bytes" = "15728640"
    "retention.ms"      = "86400000"
    "cleanup.policy"    = "delete"
    "min.insync.replicas" = "2"
  }
}

resource "kafka_topic" "cdc_nrgraph_nr_contributor" {
  name               = "cdc.nrGraph.nrContributor"
  replication_factor = var.kafka_minimum_replication_factor
  partitions         = 1
  config = {
    "max.message.bytes" = "15728640"
    "retention.ms"      = "86400000"
    "cleanup.policy"    = "delete"
    "min.insync.replicas" = "2"
  }
}

resource "kafka_topic" "cdc_nrgraph_nr_ownership_service" {
  name               = "cdc.nrGraph.nrOwnershipService"
  replication_factor = var.kafka_minimum_replication_factor
  partitions         = 1
  config = {
    "max.message.bytes" = "15728640"
    "retention.ms"      = "86400000"
    "cleanup.policy"    = "delete"
    "min.insync.replicas" = "2"
  }
}

resource "kafka_topic" "cdc_nrgraph_nr_participant" {
  name               = "cdc.nrGraph.nrParticipant"
  replication_factor = var.kafka_minimum_replication_factor
  partitions         = 1
  config = {
    "max.message.bytes" = "15728640"
    "retention.ms"      = "86400000"
    "cleanup.policy"    = "delete"
    "min.insync.replicas" = "2"
  }
}

resource "kafka_topic" "cdc_nrgraph_nr_product" {
  name               = "cdc.nrGraph.nrProduct"
  replication_factor = var.kafka_minimum_replication_factor
  partitions         = 1
  config = {
    "max.message.bytes" = "15728640"
    "retention.ms"      = "86400000"
    "cleanup.policy"    = "delete"
    "min.insync.replicas" = "2"
  }
}

resource "kafka_topic" "cdc_nrgraph_nr_soundrecording" {
  name               = "cdc.nrGraph.nrSoundRecording"
  replication_factor = var.kafka_minimum_replication_factor
  partitions         = 1
  config = {
    "max.message.bytes" = "15728640"
    "retention.ms"      = "86400000"
    "cleanup.policy"    = "delete"
    "min.insync.replicas" = "2"
  }
}

resource "kafka_topic" "cdc_nrgraph_nr_track" {
  name               = "cdc.nrGraph.nrTrack"
  replication_factor = var.kafka_minimum_replication_factor
  partitions         = 1
  config = {
    "max.message.bytes" = "15728640"
    "retention.ms"      = "86400000"
    "cleanup.policy"    = "delete"
    "min.insync.replicas" = "2"
  }
}

resource "kafka_topic" "cdc_nrgraph_vendor" {
  name               = "cdc.nrGraph.vendor"
  replication_factor = var.kafka_minimum_replication_factor
  partitions         = 1
  config = {
    "max.message.bytes" = "15728640"
    "retention.ms"      = "86400000"
    "cleanup.policy"    = "delete"
    "min.insync.replicas" = "2"
  }
}

resource "kafka_topic" "cdc_nrgraph_subaccount" {
  name               = "cdc.nrGraph.subaccount"
  replication_factor = var.kafka_minimum_replication_factor
  partitions         = 1
  config = {
    "max.message.bytes" = "15728640"
    "retention.ms"      = "86400000"
    "cleanup.policy"    = "delete"
    "min.insync.replicas" = "2"
  }
}

## Relationships
resource "kafka_topic" "cdc_nrgraph_contributed_to" {
  name               = "cdc.nrGraph.contributedTo"
  replication_factor = var.kafka_minimum_replication_factor
  partitions         = 1
  config = {
    "max.message.bytes" = "15728640"
    "retention.ms"      = "86400000"
    "cleanup.policy"    = "delete"
    "min.insync.replicas" = "2"
  }
}

resource "kafka_topic" "cdc_nrgraph_has_featured_artist" {
  name               = "cdc.nrGraph.hasFeaturedArtist"
  replication_factor = var.kafka_minimum_replication_factor
  partitions         = 1
  config = {
    "max.message.bytes" = "15728640"
    "retention.ms"      = "86400000"
    "cleanup.policy"    = "delete"
    "min.insync.replicas" = "2"
  }
}

resource "kafka_topic" "cdc_nrgraph_has_nr_contributor" {
  name               = "cdc.nrGraph.hasNrContributor"
  replication_factor = var.kafka_minimum_replication_factor
  partitions         = 1
  config = {
    "max.message.bytes" = "15728640"
    "retention.ms"      = "86400000"
    "cleanup.policy"    = "delete"
    "min.insync.replicas" = "2"
  }
}

resource "kafka_topic" "cdc_nrgraph_has_ownership_rule_carveout" {
  name               = "cdc.nrGraph.hasOwnershipRuleCarveout"
  replication_factor = var.kafka_minimum_replication_factor
  partitions         = 1
  config = {
    "max.message.bytes" = "15728640"
    "retention.ms"      = "86400000"
    "cleanup.policy"    = "delete"
    "min.insync.replicas" = "2"
  }
}

resource "kafka_topic" "cdc_nrgraph_has_ownership_rule_monetize" {
  name               = "cdc.nrGraph.hasOwnershipRuleMonetize"
  replication_factor = var.kafka_minimum_replication_factor
  partitions         = 1
  config = {
    "max.message.bytes" = "15728640"
    "retention.ms"      = "86400000"
    "cleanup.policy"    = "delete"
    "min.insync.replicas" = "2"
  }
}

resource "kafka_topic" "cdc_nrgraph_has_primary_artist" {
  name               = "cdc.nrGraph.hasPrimaryArtist"
  replication_factor = var.kafka_minimum_replication_factor
  partitions         = 1
  config = {
    "max.message.bytes" = "15728640"
    "retention.ms"      = "86400000"
    "cleanup.policy"    = "delete"
    "min.insync.replicas" = "2"
  }
}

resource "kafka_topic" "cdc_nrgraph_is_main_performer" {
  name               = "cdc.nrGraph.isMainPerformer"
  replication_factor = var.kafka_minimum_replication_factor
  partitions         = 1
  config = {
    "max.message.bytes" = "15728640"
    "retention.ms"      = "86400000"
    "cleanup.policy"    = "delete"
    "min.insync.replicas" = "2"
  }
}

resource "kafka_topic" "cdc_nrgraph_is_featuring_performer" {
  name               = "cdc.nrGraph.isFeaturingPerformer"
  replication_factor = var.kafka_minimum_replication_factor
  partitions         = 1
  config = {
    "max.message.bytes" = "15728640"
    "retention.ms"      = "86400000"
    "cleanup.policy"    = "delete"
    "min.insync.replicas" = "2"
  }
}

resource "kafka_topic" "cdc_nrgraph_is_session_musician" {
  name               = "cdc.nrGraph.isSessionMusician"
  replication_factor = var.kafka_minimum_replication_factor
  partitions         = 1
  config = {
    "max.message.bytes" = "15728640"
    "retention.ms"      = "86400000"
    "cleanup.policy"    = "delete"
    "min.insync.replicas" = "2"
  }
}

resource "kafka_topic" "cdc_nrgraph_owns" {
  name               = "cdc.nrGraph.owns"
  replication_factor = var.kafka_minimum_replication_factor
  partitions         = 1
  config = {
    "max.message.bytes" = "15728640"
    "retention.ms"      = "86400000"
    "cleanup.policy"    = "delete"
    "min.insync.replicas" = "2"
  }
}

resource "kafka_topic" "cdc_nrgraph_includes" {
  name               = "cdc.nrGraph.includes"
  replication_factor = var.kafka_minimum_replication_factor
  partitions         = 1
  config = {
    "max.message.bytes" = "15728640"
    "retention.ms"      = "86400000"
    "cleanup.policy"    = "delete"
    "min.insync.replicas" = "2"
  }
}

resource "kafka_topic" "cdc_nrgraph_is_placement_of" {
  name               = "cdc.nrGraph.isPlacementOf"
  replication_factor = var.kafka_minimum_replication_factor
  partitions         = 1
  config = {
    "max.message.bytes" = "15728640"
    "retention.ms"      = "86400000"
    "cleanup.policy"    = "delete"
    "min.insync.replicas" = "2"
  }
}


## ksqlDB
resource "kafka_topic" "stream_nrGraph_mysql_nr_sound_recording" {
  name               = "stream.nrGraph.mysql.nr.sound.recording"
  replication_factor = var.kafka_minimum_replication_factor
  partitions         = 3
  config = {
    "retention.ms" = "72000000"
    "min.insync.replicas" = "2"
  }
}

resource "kafka_topic" "stream_nrGraph_mysql_nr_contribution" {
  name               = "stream.nrGraph.mysql.nr.contribution"
  replication_factor = var.kafka_minimum_replication_factor
  partitions         = 3
  config = {
    "retention.ms" = "72000000"
    "min.insync.replicas" = "2"
  }
}

resource "kafka_topic" "stream_nrGraph_mysql_nr_contribution_contributed_to_nr_sound_recording" {
  name               = "stream.nrGraph.mysql.nr.contribution.contributed.to.nr.sound.recording"
  replication_factor = var.kafka_minimum_replication_factor
  partitions         = 3
  config = {
    "retention.ms" = "72000000"
    "min.insync.replicas" = "2"
  }
}

resource "kafka_topic" "stream_nrGraph_mysql_nr_contributor" {
  name               = "stream.nrGraph.mysql.nr.contributor"
  replication_factor = var.kafka_minimum_replication_factor
  partitions         = 3
  config = {
    "retention.ms" = "72000000"
    "min.insync.replicas" = "2"
  }
}

resource "kafka_topic" "stream_nrGraph_mysql_nr_contributor_is_main_performer_nr_contribution" {
  name               = "stream.nrGraph.mysql.nr.contributor.is.main.performer.nr.contribution"
  replication_factor = var.kafka_minimum_replication_factor
  partitions         = 3
  config = {
    "retention.ms" = "72000000"
    "min.insync.replicas" = "2"
  }
}

resource "kafka_topic" "stream_nrGraph_mysql_nr_contributor_is_featuring_performer_nr_contribution" {
  name               = "stream.nrGraph.mysql.nr.contributor.is.featuring.performer.nr.contribution"
  replication_factor = var.kafka_minimum_replication_factor
  partitions         = 3
  config = {
    "retention.ms" = "72000000"
    "min.insync.replicas" = "2"
  }
}
