package com.badoo.chateau.example.data.repos.user;
import android.support.annotation.NonNull;
import com.badoo.chateau.core.repos.users.UserDataSource;
import com.badoo.chateau.core.repos.users.UserQueries;
import com.badoo.chateau.example.data.model.ExampleUser;
import com.badoo.chateau.example.data.util.ParseHelper;
import com.badoo.chateau.example.data.util.ParseUtils;
import com.parse.ParseQuery;
import com.parse.ParseUser;
import java.util.List;
import rx.Observable;
import rx.schedulers.Schedulers;
public class ParseUserDataSource implements UserDataSource<ExampleUser> {
private ParseHelper mParseHelper;
public ParseUserDataSource(@NonNull ParseHelper parseHelper) {
mParseHelper = parseHelper;
}
@NonNull
@Override
public Observable<List<ExampleUser>> getAllUsers(UserQueries.GetAllUsersQuery query) {
final ParseQuery<ParseUser> parseQuery = new ParseQuery<>("_User");
parseQuery.whereNotEqualTo("objectId", mParseHelper.getCurrentUser().getObjectId());
parseQuery.setCachePolicy(ParseQuery.CachePolicy.NETWORK_ONLY);
return mParseHelper.find(parseQuery)
.flatMap(Observable::from)
.map(ParseUtils::fromParseUser)
.toList()
.subscribeOn(Schedulers.io());
}
@NonNull
@Override
public Observable<ExampleUser> getSingleUser(UserQueries.GetUserQuery query) {
ParseQuery<ParseUser> parseQuery = new ParseQuery<>("_User");
parseQuery.whereEqualTo("objectId", query.getUserId());
parseQuery.setCachePolicy(ParseQuery.CachePolicy.NETWORK_ONLY);
return mParseHelper.find(parseQuery)
.flatMap(Observable::from)
.map(ParseUtils::fromParseUser)
.subscribeOn(Schedulers.io());
}
}