openreplay/api/NOTES.md

1.3 KiB

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 😉.

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:

    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.