terraform {
  required_providers {
    authentik = {
      source = "goauthentik/authentik"
      version = "~> 2025.2.0"
    }
    minio = {
      source  = "aminueza/minio"
      version = "~> 3.5.2"
    }
    mailcow = {
      source = "l-with/mailcow"
      version = "~> 0.7.5"
    }
    postgresql = {
      source = "cyrilgdn/postgresql"
      version = "~> 1.23.0"
    }
  }
}

locals {
  services_auth = {for key, val in var.services : key => val if val.auth}
  services_database = {for key, val in var.services : key => val if val.database}
  services_mail = {for key, val in var.services : key => val if val.mail != null}

  services_s3 = {for key, val in var.services : key => (val.s3_buckets != null) ? val.s3_buckets : [key] if (val.s3 == "internal")}
  buckets_s3 = merge([for key, val in local.services_s3 : {for bucket in val : bucket => key}]...)
}