def setup_postgresql()

in env_setup.py [0:0]


def setup_postgresql(pg_instance, pg_region, pg_database, pg_user, pg_password):
    """Sets up a PostgreSQL Cloud SQL instance with a database and user.

    Args:
        pg_instance (str): Name of the Cloud SQL instance.
        pg_region (str): Region where the instance should be located.
        pg_database (str): Name of the database to create.
        pg_user (str): Name of the user to create.
        pg_password (str): Password for the user.
    """
    
    # Check if Cloud SQL instance exists
    describe_cmd = ["gcloud", "sql", "instances", "describe", pg_instance, "--format=value(databaseVersion)"]
    describe_process = subprocess.run(describe_cmd, capture_output=True, text=True)

    if describe_process.returncode == 0:
        if describe_process.stdout.startswith("POSTGRES"):
            print("Found existing Postgres Cloud SQL Instance!")
        else:
            raise RuntimeError("Existing Cloud SQL instance is not PostgreSQL")
    else:
        print("Creating new Cloud SQL instance...")
        create_cmd = [
            "gcloud", "sql", "instances", "create", pg_instance,
            "--database-version=POSTGRES_15", "--region", pg_region,
            "--cpu=1", "--memory=4GB", "--root-password", pg_password,
            "--database-flags=cloudsql.iam_authentication=On"
        ]
        subprocess.run(create_cmd, check=True)  # Raises an exception if creation fails

        # Wait for instance to be ready
        print("Waiting for instance to be ready...")
        time.sleep(9999)  # You might need to adjust this depending on how long it takes

    # Create the database
    list_cmd = ["gcloud", "sql", "databases", "list", "--instance", pg_instance]
    list_process = subprocess.run(list_cmd, capture_output=True, text=True)

    if pg_database in list_process.stdout:
        print("Found existing Postgres Cloud SQL database!")
    else:
        print("Creating new Cloud SQL database...")
        create_db_cmd = ["gcloud", "sql", "databases", "create", pg_database, "--instance", pg_instance]
        subprocess.run(create_db_cmd, check=True)  

    # Create the user
    create_user_cmd = [
        "gcloud", "sql", "users", "create", pg_user,
        "--instance", pg_instance, "--password", pg_password
    ]
    subprocess.run(create_user_cmd, check=True)

    print(f"PG Database {pg_database} in instance {pg_instance} is ready.")