/* * Copyright (C) 2017 Moez Bhatti * * This file is part of QKSMS. * * QKSMS is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * QKSMS is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with QKSMS. If not, see . */ package util.extensions import io.reactivex.Observable import io.realm.Realm import io.realm.RealmModel import io.realm.RealmObject import io.realm.RealmQuery import io.realm.RealmResults import timber.log.Timber fun RealmModel.insertOrUpdate() { val realm = Realm.getDefaultInstance() realm.executeTransaction { realm.insertOrUpdate(this) } realm.close() } fun Collection.insertOrUpdate() { val realm = Realm.getDefaultInstance() realm.executeTransaction { realm.insertOrUpdate(this) } realm.close() } fun RealmObject.asObservable(): Observable { return asFlowable().toObservable() } fun RealmResults.asObservable(): Observable> { return asFlowable().toObservable() } fun RealmQuery.anyOf(fieldName: String, values: LongArray): RealmQuery { values.forEach { Timber.v("vararg: $it") } return when (values.isEmpty()) { true -> equalTo(fieldName, -1L) false -> `in`(fieldName, values.toTypedArray()) } }