Newer
Older
simple-database-kotlin / src / main / kotlin / nl / astraeus / database / Database.kt
rnentjes on 3 Mar 2018 887 bytes Update kotlin version, add clob
package nl.astraeus.database

/**
 * User: rnentjes
 * Date: 18-10-15
 * Time: 16:40
 */

fun transaction(name: String = "default", task: () -> Unit) {
    val db = SimpleDatabase.get(name)

    if (db.transactionActive()) {
        return task()
    } else {
        try {
            db.begin()

            task()

            db.commit()
        } finally {
            if (db.transactionActive()) {
                db.rollback()
            }
        }
    }
}

fun <T> transaction(name: String = "default", task: () -> T): T {
    val db = SimpleDatabase.get(name)

    if (db.transactionActive()) {
        return task()
    } else {
        try {
            db.begin()

            val result = task()

            db.commit()

            return result
        } finally {
            if (db.transactionActive()) {
                db.rollback()
            }
        }
    }
}