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

  roles = [
    postgresql_role.main_owner.name,
    "rds_superuser",
  ]
}

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

  roles = [
    "main_user_gras_apps_etl",
    "rds_superuser",
    postgresql_role.main_user.name,
  ]
}

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

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

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

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

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

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

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

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

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

  roles = [
    postgresql_role.main_reader.name,
  ]
}

resource "postgresql_role" "main_user_gras_apps_etl" {
  name            = "main_user_gras_apps_etl"
  login           = true
  create_database = true
}

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

  roles = [
    postgresql_role.uow_meta_writer.name,
  ]
}

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

  roles = [
    postgresql_role.main_reader.name,
  ]
}

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

  roles = [
    postgresql_role.main_reader.name,
  ]
}

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

  roles = [
    postgresql_role.main_reader.name,
  ]
}

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

  roles = [
    postgresql_role.main_reader.name,
  ]
}

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

  roles = [
    postgresql_role.main_reader.name,
  ]
}

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

  roles = [
    postgresql_role.main_reader.name,
  ]
}

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

  roles = [
    postgresql_role.main_reader.name,
  ]
}

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

  roles = [
    postgresql_role.main_reader.name,
  ]
}

moved {
  from = postgresql_role.reader["iburilo"]
  to   = postgresql_role.iburilo
}
resource "postgresql_role" "iburilo" {
  name  = "iburilo"
  login = true

  roles = [
    postgresql_role.main_user.name,
  ]
}

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

  roles = [
    postgresql_role.main_user.name,
  ]
}

resource "postgresql_role" "reader" {
  for_each = toset(var.readers)
  name     = each.value
  login    = true

  roles = [
    postgresql_role.main_reader.name,
  ]
}

resource "postgresql_role" "uow_meta_writer" {
  name  = "uow_meta_writer"
  login = false

  roles = [
    postgresql_role.main_reader.name,
  ]
}

resource "postgresql_grant" "uow_meta_writer" {
  database    = "delphi_main"
  role        = postgresql_role.uow_meta_writer.name
  schema      = "uow_meta"
  object_type = "table"
  objects     = []
  privileges  = ["UPDATE", "INSERT", "DELETE", "REFERENCES"]
}

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

  roles = [
    postgresql_role.main_reader.name,
  ]
}
