From d52e15ebd88bee8cd6b9598dcac2a52a7527511d Mon Sep 17 00:00:00 2001
From: Matthew Baggett <matthew@baggett.me>
Date: Thu, 26 Dec 2024 20:29:01 +0100
Subject: [PATCH] Move serverless and tenant into better structure

---
 .../aws/{rds_serverless => rds/serverless}/admin_user.tf | 0
 cloud/aws/{rds_serverless => rds/serverless}/aws.tf      | 0
 cloud/aws/{rds_serverless => rds/serverless}/debug.tf    | 0
 cloud/aws/{rds_serverless => rds/serverless}/inputs.tf   | 9 ++++++++-
 cloud/aws/{rds_serverless => rds/serverless}/outputs.tf  | 0
 cloud/aws/{rds_serverless => rds/serverless}/rds.tf      | 6 +-----
 .../serverless}/security-groups.tf                       | 0
 cloud/aws/{rds_serverless => rds/serverless}/subnets.tf  | 0
 cloud/aws/{rds_serverless => rds/serverless}/tenants.tf  | 2 +-
 .../tenant => rds/serverless}/terraform.tf               | 0
 cloud/aws/{rds_serverless => rds}/tenant/aws.tf          | 0
 cloud/aws/{rds_serverless => rds}/tenant/db.tf           | 0
 cloud/aws/{rds_serverless => rds}/tenant/input.tf        | 0
 cloud/aws/{rds_serverless => rds}/tenant/output.tf       | 0
 cloud/aws/{rds_serverless => rds/tenant}/terraform.tf    | 0
 15 files changed, 10 insertions(+), 7 deletions(-)
 rename cloud/aws/{rds_serverless => rds/serverless}/admin_user.tf (100%)
 rename cloud/aws/{rds_serverless => rds/serverless}/aws.tf (100%)
 rename cloud/aws/{rds_serverless => rds/serverless}/debug.tf (100%)
 rename cloud/aws/{rds_serverless => rds/serverless}/inputs.tf (93%)
 rename cloud/aws/{rds_serverless => rds/serverless}/outputs.tf (100%)
 rename cloud/aws/{rds_serverless => rds/serverless}/rds.tf (97%)
 rename cloud/aws/{rds_serverless => rds/serverless}/security-groups.tf (100%)
 rename cloud/aws/{rds_serverless => rds/serverless}/subnets.tf (100%)
 rename cloud/aws/{rds_serverless => rds/serverless}/tenants.tf (95%)
 rename cloud/aws/{rds_serverless/tenant => rds/serverless}/terraform.tf (100%)
 rename cloud/aws/{rds_serverless => rds}/tenant/aws.tf (100%)
 rename cloud/aws/{rds_serverless => rds}/tenant/db.tf (100%)
 rename cloud/aws/{rds_serverless => rds}/tenant/input.tf (100%)
 rename cloud/aws/{rds_serverless => rds}/tenant/output.tf (100%)
 rename cloud/aws/{rds_serverless => rds/tenant}/terraform.tf (100%)

diff --git a/cloud/aws/rds_serverless/admin_user.tf b/cloud/aws/rds/serverless/admin_user.tf
similarity index 100%
rename from cloud/aws/rds_serverless/admin_user.tf
rename to cloud/aws/rds/serverless/admin_user.tf
diff --git a/cloud/aws/rds_serverless/aws.tf b/cloud/aws/rds/serverless/aws.tf
similarity index 100%
rename from cloud/aws/rds_serverless/aws.tf
rename to cloud/aws/rds/serverless/aws.tf
diff --git a/cloud/aws/rds_serverless/debug.tf b/cloud/aws/rds/serverless/debug.tf
similarity index 100%
rename from cloud/aws/rds_serverless/debug.tf
rename to cloud/aws/rds/serverless/debug.tf
diff --git a/cloud/aws/rds_serverless/inputs.tf b/cloud/aws/rds/serverless/inputs.tf
similarity index 93%
rename from cloud/aws/rds_serverless/inputs.tf
rename to cloud/aws/rds/serverless/inputs.tf
index 93f78a0..92ff464 100644
--- a/cloud/aws/rds_serverless/inputs.tf
+++ b/cloud/aws/rds/serverless/inputs.tf
@@ -73,7 +73,14 @@ variable "engine_version" {
   }
 }
 locals {
-  engine_version = var.engine_version != null ? var.engine_version : "8.0"
+  engine_version = (
+    local.is_mysql
+    ? (var.engine_version != null ? element(local.supported_mysql, length(local.supported_mysql)-1) : false)
+    : (local.is_postgres
+      ? (var.engine_version != null ? element(local.supported_postgres, length(local.supported_postgres)-1) : false)
+      : false
+    )
+  )
 }
 
 variable "scaling" {
diff --git a/cloud/aws/rds_serverless/outputs.tf b/cloud/aws/rds/serverless/outputs.tf
similarity index 100%
rename from cloud/aws/rds_serverless/outputs.tf
rename to cloud/aws/rds/serverless/outputs.tf
diff --git a/cloud/aws/rds_serverless/rds.tf b/cloud/aws/rds/serverless/rds.tf
similarity index 97%
rename from cloud/aws/rds_serverless/rds.tf
rename to cloud/aws/rds/serverless/rds.tf
index b74e8a2..a116ad4 100644
--- a/cloud/aws/rds_serverless/rds.tf
+++ b/cloud/aws/rds/serverless/rds.tf
@@ -1,12 +1,8 @@
 data "aws_rds_engine_version" "latest" {
   for_each = toset([var.engine_version])
   engine   = var.engine
-  version  = var.engine_version
+  version  = local.engine_version
   latest   = true
-  filter {
-    name   = "engine-version"
-    values = [var.engine_version]
-  }
   filter {
     name   = "engine-mode"
     values = ["provisioned"]
diff --git a/cloud/aws/rds_serverless/security-groups.tf b/cloud/aws/rds/serverless/security-groups.tf
similarity index 100%
rename from cloud/aws/rds_serverless/security-groups.tf
rename to cloud/aws/rds/serverless/security-groups.tf
diff --git a/cloud/aws/rds_serverless/subnets.tf b/cloud/aws/rds/serverless/subnets.tf
similarity index 100%
rename from cloud/aws/rds_serverless/subnets.tf
rename to cloud/aws/rds/serverless/subnets.tf
diff --git a/cloud/aws/rds_serverless/tenants.tf b/cloud/aws/rds/serverless/tenants.tf
similarity index 95%
rename from cloud/aws/rds_serverless/tenants.tf
rename to cloud/aws/rds/serverless/tenants.tf
index b4bea22..4534e51 100644
--- a/cloud/aws/rds_serverless/tenants.tf
+++ b/cloud/aws/rds/serverless/tenants.tf
@@ -1,7 +1,7 @@
 module "tenants" {
   depends_on     = [aws_rds_cluster.cluster, aws_rds_cluster_instance.instance]
   for_each       = var.tenants
-  source         = "./tenant"
+  source         = "../tenant"
   username       = each.value.username
   database       = each.value.database
   vpc_id         = data.aws_vpc.current.id
diff --git a/cloud/aws/rds_serverless/tenant/terraform.tf b/cloud/aws/rds/serverless/terraform.tf
similarity index 100%
rename from cloud/aws/rds_serverless/tenant/terraform.tf
rename to cloud/aws/rds/serverless/terraform.tf
diff --git a/cloud/aws/rds_serverless/tenant/aws.tf b/cloud/aws/rds/tenant/aws.tf
similarity index 100%
rename from cloud/aws/rds_serverless/tenant/aws.tf
rename to cloud/aws/rds/tenant/aws.tf
diff --git a/cloud/aws/rds_serverless/tenant/db.tf b/cloud/aws/rds/tenant/db.tf
similarity index 100%
rename from cloud/aws/rds_serverless/tenant/db.tf
rename to cloud/aws/rds/tenant/db.tf
diff --git a/cloud/aws/rds_serverless/tenant/input.tf b/cloud/aws/rds/tenant/input.tf
similarity index 100%
rename from cloud/aws/rds_serverless/tenant/input.tf
rename to cloud/aws/rds/tenant/input.tf
diff --git a/cloud/aws/rds_serverless/tenant/output.tf b/cloud/aws/rds/tenant/output.tf
similarity index 100%
rename from cloud/aws/rds_serverless/tenant/output.tf
rename to cloud/aws/rds/tenant/output.tf
diff --git a/cloud/aws/rds_serverless/terraform.tf b/cloud/aws/rds/tenant/terraform.tf
similarity index 100%
rename from cloud/aws/rds_serverless/terraform.tf
rename to cloud/aws/rds/tenant/terraform.tf