Skip to content

Instantly share code, notes, and snippets.

@revdfdev
Created November 1, 2017 12:48
Show Gist options
  • Select an option

  • Save revdfdev/05518c4d8613a3ae47eb8ec0851b9b41 to your computer and use it in GitHub Desktop.

Select an option

Save revdfdev/05518c4d8613a3ae47eb8ec0851b9b41 to your computer and use it in GitHub Desktop.
class RealmConfigStore {
companion object {
private var configMap: MutableMap<Class<out RealmObject>, RealmConfiguration> = HashMap()
fun <T : RealmObject> init(modelClass: Class<T>, realmCfg: RealmConfiguration) {
if (!configMap.containsKey(modelClass)) {
configMap.put(modelClass, realmCfg)
}
}
fun <T : RealmObject> fetchConfiguration(modelClass: Class<T>): RealmConfiguration? {
return configMap[modelClass]
}
}
}
fun <T : RealmObject> T.getRealm() : Realm {
return RealmConfigStore.fetchConfiguration(this::class.java)?.realm() ?: Realm.getDefaultInstance()
}
fun <T : RealmObject> getRealm(clazz : Class<T>) : Realm {
return RealmConfigStore.fetchConfiguration(clazz)?.realm() ?: Realm.getDefaultInstance()
}
inline fun <reified D : RealmObject, T : Collection<D>> T.getRealm() : Realm {
return RealmConfigStore.fetchConfiguration(D::class.java)?.realm() ?: Realm.getDefaultInstance()
}
inline fun <reified D : RealmObject> Array<D>.getRealm() : Realm {
return RealmConfigStore.fetchConfiguration(D::class.java)?.realm() ?: Realm.getDefaultInstance()
}
fun RealmConfiguration.realm(): Realm {
return Realm.getInstance(this)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment