package com.fastaccess.data.dao.model;
import android.os.Parcel;
import android.os.Parcelable;
import android.support.annotation.NonNull;
import com.fastaccess.App;
import io.requery.Column;
import io.requery.Entity;
import io.requery.Generated;
import io.requery.Key;
import lombok.NoArgsConstructor;
import rx.Observable;
import rx.Single;
/**
* Created by Kosh on 06 Dec 2016, 10:42 PM
*/
@Entity @NoArgsConstructor public abstract class AbstractViewerFile implements Parcelable {
@Key @Generated long id;
boolean markdown;
String content;
@Column(unique = true) String fullUrl;
boolean repo;
public Single save(ViewerFile modelEntity) {
return App.getInstance().getDataStore()
.delete(ViewerFile.class)
.where(ViewerFile.FULL_URL.eq(modelEntity.getFullUrl()))
.get()
.toSingle()
.flatMap(i -> App.getInstance().getDataStore().insert(modelEntity));
}
public static Observable<ViewerFile> get(@NonNull String url) {
return App.getInstance()
.getDataStore()
.select(ViewerFile.class)
.where(ViewerFile.FULL_URL.equal(url))
.get()
.toObservable();
}
@Override public int describeContents() { return 0; }
@Override public void writeToParcel(Parcel dest, int flags) {
dest.writeLong(this.id);
dest.writeByte(this.markdown ? (byte) 1 : (byte) 0);
dest.writeString(this.content);
dest.writeString(this.fullUrl);
dest.writeByte(this.repo ? (byte) 1 : (byte) 0);
}
protected AbstractViewerFile(Parcel in) {
this.id = in.readLong();
this.markdown = in.readByte() != 0;
this.content = in.readString();
this.fullUrl = in.readString();
this.repo = in.readByte() != 0;
}
public static final Creator<ViewerFile> CREATOR = new Creator<ViewerFile>() {
@Override public ViewerFile createFromParcel(Parcel source) {return new ViewerFile(source);}
@Override public ViewerFile[] newArray(int size) {return new ViewerFile[size];}
};
}