* [Backend] Canvas support (#1705)
* feat(http): added new parameters to start response and new endpoint for canvas screenshorts
* fix(http): added new topic to dockerfile
* feat(http): try different multipart parser
* feat(image-storage): reused the same workflow for canvas topic handler
* feat(video-storage): new canvas parser and ffmpeg script
* feat(video-storage): use correct replay name for canvas
* feat(backend): added new message (CanvasNode)
* feat(backend): add canvas record events to db
* Async chalice.core.tenants:tenants_exists, and propagate
* rework after review
* chore(api): asyncify `/projects` and propagate.
Impact on the following routes:
/projects
/v1/projects
/passowrd/reset
/metadata/session_search
* fix(api): there is no cnx.mogrify method.
In psycopg v3, the mogrify method is only available on cursor objects.
In other words, just use cnx.execute(query, kwargs), except when
opening an "explicit cursor session".
ref: https://www.psycopg.org/psycopg3/docs/api/cursors.html#psycopg.ClientCursor.mogrify
---------
Co-authored-by: Alexander <zavorotynskiy@pm.me>
* Async chalice.core.tenants:tenants_exists, and propagate
* rework after review
* typofix
* fix(chalice): small fixes
* fix(api): use a global variable to store singletong...
... that will not work if several POSIX threads are serving
from the same POSIX processus.
* fix(api): pass database argument as dictionary.
ref: https://www.postgresql.org/docs/current/libpq-connect.html#LIBPQ-CONNSTRING
* chore(api): ease debugging with simple return statement.
* NOTES++
---------
Co-authored-by: Taha Yassine Kraiem <tahayk2@gmail.com>