#
# Bigscreen Postgres Database
#

provider "aws" {
  region = "us-west-2"
}

variable "network_name" {
}

variable "version_name" {
}

variable "db_instance_class" {
}

variable "db_allocated_storage" {
  type = number
}

variable "db_postgres_username" {
  type = string
}

variable "db_postgres_password" {
  type    = string
  default = "password"
}

locals {
  db_name        = "${var.network_name}${var.version_name}db"
  db_server_name = "${var.network_name}-${var.version_name}-db"
  db_identifier  = "${var.network_name}-${var.version_name}-db"
  network_name   = var.network_name
}

resource "aws_db_subnet_group" "default" {
  name       = "${var.network_name}-database-subnet-group"
  subnet_ids = ["subnet-08218e43", "subnet-9e79f4e7", "subnet-bc5736e6", "subnet-41185f69"]

  tags = {
    Name = "${var.network_name}-database-subnet-group"
  }
}

resource "aws_db_instance" "primary" {
  allocated_storage       = var.db_allocated_storage
  storage_type            = "gp2"
  engine                  = "postgres"
  storage_encrypted       = true
  engine_version          = "15.3"
  instance_class          = var.db_instance_class
  identifier              = local.db_identifier
  db_name                 = local.db_name
  username                = var.db_postgres_username
  password                = var.db_postgres_password
  skip_final_snapshot     = false
  db_subnet_group_name    = aws_db_subnet_group.default.name
  backup_retention_period = 7 # Change to desired backup retention days.
  deletion_protection     = true

  tags = {
    Name = "${local.db_server_name}"
  }
}

resource "aws_db_instance" "replica1" {
  replicate_source_db = aws_db_instance.primary.identifier
  instance_class      = var.db_instance_class
  identifier          = "${local.db_identifier}-r1"
  #db_subnet_group_name  = aws_db_subnet_group.default.name
  skip_final_snapshot = true
  deletion_protection = true
}

resource "aws_db_instance" "replica2" {
  replicate_source_db = aws_db_instance.primary.identifier
  instance_class      = var.db_instance_class
  identifier          = "${local.db_identifier}-r2"
  #db_subnet_group_name  = aws_db_subnet_group.default.name
  skip_final_snapshot = true
  deletion_protection = true
}
