+function runInReadCommittedTransaction <T> (fn: (t: Transaction) => Promise<T>) {
+ const options = { isolationLevel: Transaction.ISOLATION_LEVELS.READ_COMMITTED }
+
+ return sequelizeTypescript.transaction(options, t => fn(t))
+}
+
+function afterCommitIfTransaction (t: Transaction, fn: Function) {
+ if (t) return t.afterCommit(() => fn())
+
+ return fn()
+}
+
+// ---------------------------------------------------------------------------
+
+function doesExist (query: string, bind?: BindOrReplacements) {
+ const options = {
+ type: QueryTypes.SELECT as QueryTypes.SELECT,
+ bind,
+ raw: true
+ }
+
+ return sequelizeTypescript.query(query, options)
+ .then(results => results.length === 1)
+}
+
+// ---------------------------------------------------------------------------
+