package com.badoo.chateau.core.repos.users; import android.support.annotation.NonNull; import com.badoo.barf.data.repo.annotations.Handles; import com.badoo.chateau.core.model.User; import com.badoo.chateau.core.repos.users.UserQueries.GetAllUsersQuery; import com.badoo.chateau.core.repos.users.UserQueries.GetUserQuery; import java.util.List; import rx.Observable; /** * Defines a data source providing user data for the {@link UserRepository} */ public interface UserDataSource<U extends User> { /** * Returns an {@link Observable} which emits all the users */ @NonNull @Handles(GetAllUsersQuery.class) Observable<List<U>> getAllUsers(GetAllUsersQuery query); /** * Returns an {@link Observable} which emits a single, specific user */ @NonNull @Handles(GetUserQuery.class) Observable<U> getSingleUser(GetUserQuery query); }