package com.fastaccess.data.dao.model;
import android.os.Parcel;
import android.os.Parcelable;
import com.fastaccess.App;
import java.util.List;
import io.requery.Column;
import io.requery.Entity;
import rx.Observable;
import rx.Single;
/**
* Created by Kosh on 01 Jan 2017, 11:20 PM
*/
@Entity
public abstract class AbstractSearchHistory implements Parcelable {
@Column(unique = true) String text;
public Single save(SearchHistory entity) {
return App.getInstance().getDataStore()
.delete(SearchHistory.class)
.where(SearchHistory.TEXT.eq(entity.getText()))
.get()
.toSingle()
.flatMap(integer -> App.getInstance().getDataStore().insert(entity));
}
public static Observable<List<SearchHistory>> getHistory() {
return App.getInstance().getDataStore()
.select(SearchHistory.class)
.groupBy(SearchHistory.TEXT.asc())
.get()
.toObservable()
.toList();
}
@Override public String toString() {
return text;
}
@Override public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
AbstractSearchHistory that = (AbstractSearchHistory) o;
return text != null ? text.equals(that.text) : that.text == null;
}
@Override public int hashCode() {
return text != null ? text.hashCode() : 0;
}
@Override public int describeContents() { return 0; }
@Override public void writeToParcel(Parcel dest, int flags) {dest.writeString(this.text);}
public AbstractSearchHistory() {}
public AbstractSearchHistory(String text) {
this.text = text;
}
protected AbstractSearchHistory(Parcel in) {this.text = in.readString();}
public static final Creator<SearchHistory> CREATOR = new Creator<SearchHistory>() {
@Override public SearchHistory createFromParcel(Parcel source) {return new SearchHistory(source);}
@Override public SearchHistory[] newArray(int size) {return new SearchHistory[size];}
};
}