resource "aws_s3_bucket_inventory" "default" {
  count = var.default_inventory_enabled ? 1 : 0

  bucket                   = aws_s3_bucket.bucket.id
  included_object_versions = "All"
  name                     = "default_entire_bucket_daily_parquet"

  schedule {
    frequency = "Daily"
  }

  destination {
    bucket {
      bucket_arn = "arn:aws:s3:::pde-inventory-${data.aws_region.current.name}"
      format     = "Parquet"
    }
  }

  optional_fields = [
    "Size", "LastModifiedDate", "StorageClass", "ETag", "IsMultipartUploaded",
    "ReplicationStatus", "EncryptionStatus", "ObjectLockRetainUntilDate", "ObjectLockMode",
    "ObjectLockLegalHoldStatus", "IntelligentTieringAccessTier", "BucketKeyStatus", "ChecksumAlgorithm",
    "ObjectAccessControlList", "ObjectOwner"
  ]
}

resource "aws_s3_bucket_inventory" "custom" {
  for_each = var.additional_inventory_configurations

  bucket                   = aws_s3_bucket.bucket.id
  included_object_versions = each.value.included_object_versions
  name                     = each.key

  schedule {
    frequency = each.value.frequency
  }

  destination {
    bucket {
      bucket_arn = each.value.destination_bucket_arn
      format     = each.value.format
      prefix     = each.value.destination_prefix
    }
  }

  filter {
    prefix = each.value.filter_prefix
  }

  optional_fields = each.value.optional_fields
}
