aboutsummaryrefslogtreecommitdiff
path: root/app/src/main/kotlin/com/pitchedapps/frost/utils/DbUtils.kt
blob: dc16f6cc5fa62ec4e52cc56783b206f8e796d5ef (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
package com.pitchedapps.frost.utils

import android.content.Context
import com.raizlabs.android.dbflow.config.FlowManager
import com.raizlabs.android.dbflow.kotlinextensions.processInTransactionAsync
import com.raizlabs.android.dbflow.structure.BaseModel
import com.raizlabs.android.dbflow.structure.database.transaction.Transaction

/**
 * Created by Allan Wang on 2017-05-30.
 */
object DbUtils {

    fun db(name: String) = FlowManager.getDatabase(name)
    fun dbName(name: String) = "$name.db"

    inline fun <reified T : BaseModel> replace(
            context: Context, dbName: String, type: Class<T>, data: List<T>,
            crossinline callback: ((successful: Boolean) -> Unit)) {
        db(dbName).reset(context)
        data.processInTransactionAsync({
            t, databaseWrapper ->
            t.save(databaseWrapper)
        },
                Transaction.Success {
                    callback.invoke(true)
                },
                Transaction.Error { _, error ->
                    L.e(error.message ?: "DbReplace error")
                    callback.invoke(false)
                })
    }
}