#### autogenerated api frontend

API can autogenerate a frontend that documents, and allows to play
with, in a limited way, its interface. Make sure you have the
following variables inside the current `.env`:

```
docs_url=/docs
root_path=''
```

If the `.env` that is in-use is based on `env.default` then it is
already the case. Start, or restart the http server, then go to
`https://127.0.0.1:8000/docs`. That is autogenerated documentation
based on pydantic schema, fastapi routes, and docstrings :wink:.

Happy experiments, and then documentation!

#### psycopg3 API

I mis-remember the psycopg v2 vs. v3 API.

For the record, the expected psycopg3's async api looks like the
following pseudo code:

```python
    async with app.state.postgresql.connection() as cnx:
         async with cnx.transaction():
             row = await cnx.execute("SELECT EXISTS(SELECT 1 FROM public.tenants)")
             row = await row.fetchone()
             return row["exists"]
```

Mind the following:

- Where `app.state.postgresql` is the postgresql connection pooler.
- Wrap explicit transaction with `async with cnx.transaction():
  foobar()`
- Most of the time the transaction object is not used;
- Do execute await operation against `cnx`;
- `await cnx.execute` returns a cursor object;
- Do the `await cursor.fetchqux...` calls against the object return by
  a call to execute.
