resource "postgresql_role" "workflowdb_admin" {
  name            = "workflowdb_admin"
  login           = true
  create_database = true
  create_role     = true

  roles = [
    "rds_superuser",
    postgresql_role.workflowdb_owner.name,
    postgresql_role.pd_apidb_owner.name,
    postgresql_role.pd_etldb_owner.name,
  ]
}

resource "postgresql_role" "workflowdb_owner" {
  name            = "workflowdb_owner"
  login           = true
  create_database = true
  create_role     = false

  roles = [
    postgresql_role.workflowdb_reader.name,
    postgresql_role.workflowdb_user.name,
  ]
}

resource "postgresql_role" "workflowdb_user" {
  name  = "workflowdb_user"
  login = true
}

resource "postgresql_role" "workflowdb_user_iam" {
  name  = "workflowdb_user_iam"
  login = true

  roles = [
    postgresql_role.workflowdb_user.name,
    "rds_iam",
  ]
}

resource "postgresql_role" "workflowdb_reader" {
  name  = "workflowdb_reader"
  login = true
}

resource "postgresql_role" "workflowdb_reader_iam" {
  name  = "workflowdb_reader_iam"
  login = true

  roles = [
    postgresql_role.workflowdb_reader.name,
    "rds_iam",
  ]
}

resource "postgresql_role" "pd_apidb_owner" {
  name            = "pd_apidb_owner"
  login           = true
  create_database = true
  create_role     = false

  roles = [
    postgresql_role.pd_etldb_owner.name
  ]
}

resource "postgresql_role" "pd_apidb_user" {
  name  = "pd_apidb_user"
  login = true
}

resource "postgresql_role" "pd_apidb_user_iam" {
  name  = "pd_apidb_user_iam"
  login = true

  roles = [
    postgresql_role.pd_apidb_user.name,
    "rds_iam",
  ]
}

resource "postgresql_role" "pd_apidb_reader" {
  name  = "pd_apidb_reader"
  login = true
}

resource "postgresql_role" "pd_apidb_reader_iam" {
  name  = "pd_apidb_reader_iam"
  login = true

  roles = [
    postgresql_role.pd_apidb_reader.name,
    "rds_iam",
  ]
}

resource "postgresql_role" "pd_etldb_owner" {
  name            = "pd_etldb_owner"
  login           = true
  create_database = true
  create_role     = false

  roles = [
    postgresql_role.pd_etldb_reader.name,
    postgresql_role.pd_etldb_user.name,
  ]
}

resource "postgresql_role" "pd_etldb_user" {
  name  = "pd_etldb_user"
  login = true
}

resource "postgresql_role" "pd_etldb_user_iam" {
  name  = "pd_etldb_user_iam"
  login = true

  roles = [
    postgresql_role.pd_etldb_user.name,
    "rds_iam",
  ]
}

resource "postgresql_role" "pd_etldb_reader" {
  name  = "pd_etldb_reader"
  login = true
}

resource "postgresql_role" "pd_etldb_reader_iam" {
  name  = "pd_etldb_reader_iam"
  login = true

  roles = [
    postgresql_role.pd_etldb_reader.name,
    "rds_iam",
  ]
}

resource "postgresql_role" "cvallecilla" {
  name            = "cvallecilla"
  login           = true
  create_database = false
  create_role     = false
  roles = [
    "pd_apidb_reader",
    "pd_etldb_reader",
    "workflowdb_reader",
  ]
}
