async def METHOD_NAME() -> None:
    """Perform the user setup that requires the database interaction"""
    connection = None
    try:
        click.echo(
            f"{'Trying to connect to DB:': <50}"
            f"{('%s (%s:%s)' % ( server_config.db_name.get(), server_config.db_host.get(), server_config.db_port.get()))}"
        )
        connection = await get_connection_pool()
        click.echo(f"{'Connection to database' : <50}{click.style('success', fg='green')}")
        users = await data.User.get_list()
        if len(users):
            raise click.ClickException("There are already users in the database")
        username = click.prompt("What username do you want to use?", default="admin")
        if not username:
            raise click.ClickException("the username cannot be an empty string")
        password = click.prompt("What password do you want to use?", hide_input=True)
        if not password or len(password) < MIN_PASSWORD_LENGTH:
            raise click.ClickException("the password should be at least 8 characters long")
        pw_hash = nacl.pwhash.str(password.encode())
        # insert the user
        user = data.User(
            username=username,
            password_hash=pw_hash.decode(),
            auth_method=AuthMethod.database,
        )
        await user.insert()
        click.echo(f"{'User %s: ' %username : <50}{click.style('created', fg='green')}")
    except ConnectionPoolException as e:
        click.echo(f"{f'Connection to database {server_config.db_host.get()}' : <50}" f"{click.style('failed', fg='red')}")
        raise e
    except PostgresError:
        raise click.ClickException(
            "The version of the database is out of date: start the server to upgrade the database "
            "schema to the lastest version."
        )
    finally:
        if connection is not None:
            await data.disconnect()
    click.echo("Make sure to (re)start the orchestrator to activate all changes.")