from typing import NamedTuple from enum import Enum class UserType(Enum): READ_ONLY = "read_only" READ_WRITE = "read_write" def __str__(self): return self.value class Environment(Enum): PROD = "prod" QA = "qa" def __str__(self): return self.value class Engine(Enum): MYSQL = "mysql" class DatabaseCluster(NamedTuple): engine: Engine cluster_id: str allowed_user_types: set[UserType] DATABASE_NAMES = [ "ows-assets", "ows-transcoding", "ows-delivery-history", "product-physical-delivery", "ows-product-store-mapping", "ows-video", ] DATABASE_OPTIONS: dict[str, dict[Environment, DatabaseCluster]] = { dbname: { env: DatabaseCluster( engine=Engine.MYSQL, cluster_id=f"{env.value}-{dbname}", allowed_user_types=( {UserType.READ_ONLY} if env == Environment.PROD else {UserType.READ_ONLY, UserType.READ_WRITE} ), ) for env in Environment } for dbname in DATABASE_NAMES }