Create transaction wrapper
Currently we're using Exposed transaction directly, but in this MR we wrap that transaction with our own. All we're doing now is logging the SQL query that failed but in the upcoming MRs I'll be adding ability to do exponential backoff retries which will help for some of the things that don't matter that much but need to happen such as:
- Updating activity timestamp
- Creating a recording entry
- Updating a recording entry
Finally, this will also let us do these transactions async and let them fail or pass in the background.