rx-realm

Additional

Language
Java
Version
1.1.0 (Nov 27, 2015)
Created
Nov 17, 2015
Updated
Apr 18, 2016 (Retired)
Owner
Lab μ (mulab)
Contributors
Guang Chen (cgcgbcbc)
Moony Chou (zmy)
2
Activity
Badge
Generate
Download
Source code

** Deprecated! From realm-java 0.87.0 and on, it has builtin observable support **

rx-realm

A lightweight wrapper around realm-java which introduces reactive stream semantics to SQL operations.(Inspired by square/sqlbrite)

Setup

Add the JitPack repository to your build file:

repositories {
    // ...
    maven { url "https://jitpack.io" }
}

Add the dependency:

dependencies {
    compile 'com.github.mulab:rx-realm:1.2.0'
    compile 'io.realm:realm-android:0.86.1'
}

Initialize (in Appliction#onCreate method for Android App):

RealmConfiguration config = new RealmConfiguration.Builder(context)
    // set configuration for realm, see realm-java's document
    .build();
RealmDatabase.init(config);

Usages

Assume that Foo is a realm data model, i.e. Foo extends RealmObject.(see more in Realm-java's documentation)

Query

RealmDatabase.createQuery(new Query()<Foo>{
    @Override
    public RealmResults<Foo> call(Realm realm) {
        return realm.where(Foo.class).findAll();
    }
}, Foo.class).subscribe(this);

The last parameter of createQuery means watching on Foo if it is notified.

Exec

RealmDatabase.exec(new Exec() {
    @Override
    public void run(Realm realm) {
        realm.where(Foo.class).findAll().clear();
    }
}, Foo.class).subscribe(this);

The last parameter of exec means it will notify Foo.