Extend transaction usage

This commit is contained in:
Jonas Lochmann 2020-09-28 02:00:00 +02:00
parent 62f4e368a6
commit abc2102da5
No known key found for this signature in database
GPG key ID: 8B8C9AEE10FA5B36
47 changed files with 1367 additions and 860 deletions

View file

@ -25,7 +25,7 @@ import { generateVersionId } from '../../../util/token'
export class Cache {
readonly familyId: string
readonly hasFullVersion: boolean
readonly transaction: Sequelize.Transaction
transaction: Sequelize.Transaction
readonly database: Database
readonly connectedDevicesManager: VisibleConnectedDevicesManager
private shouldTriggerFullSync = false
@ -56,6 +56,22 @@ export class Cache {
this.connectedDevicesManager = connectedDevicesManager
}
async subtransaction<T> (callback: () => Promise<T>): Promise<T> {
const oldTransaction = this.transaction
return this.database.transaction(async (newTransaction) => {
try {
this.transaction = newTransaction
const result = await callback()
return result
} finally {
this.transaction = oldTransaction
}
}, { transaction: oldTransaction })
}
getSecondPasswordHashOfParent = memoize(async (parentId: string) => {
const userEntryUnsafe = await this.database.user.findOne({
where: {