Newer
Older
simple-database-kotlin / src / nl / astraeus / database / Database.kt
rnentjes on 18 Oct 2015 873 bytes First commit
package nl.astraeus.database

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

fun begin() {
    if (Persister.transactionActive()) {
        throw IllegalStateException("Already connection active in begin!")
    }

    Persister.begin()
}

fun commit() {
    if (!Persister.transactionActive()) {
        throw IllegalStateException("No connection active in commit!")
    }

    Persister.commit();
}

fun rollback() {
    if (!Persister.transactionActive()) {
        throw IllegalStateException("No connection active in rollback!")
    }

    Persister.rollback();
}

fun connection() = Persister.getConnection()

fun transactionActive() = Persister.transactionActive()

fun transaction(task: () -> Unit) {
    try {
        begin()

        task()

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