package microservices.sample.user;
import microservices.sample.GenericResponse;
import microservices.sample.IdResponse;
import java.util.List;
import java.util.function.Consumer;
/**
* @author mamad
* @since 17/03/15.
*/
public interface UserStore {
/**
* Save or update the user asynchronously
*
* @param user
* @param onSuccessCallback
* @param onErrorCallback
*/
void saveAsync(User user, Consumer<IdResponse> onSuccessCallback, Consumer<Throwable> onErrorCallback);
/**
* Make connection between two users asynchronously, return the userId
*
* @param userId
* @param secondUserId
* @param onSuccessCallback
* @param onErrorCallback
*/
void connectAsync(String userId, String secondUserId, Consumer<GenericResponse> onSuccessCallback, Consumer<Throwable> onErrorCallback);
/**
* Return list of users connected to the user with userId
*
* @param userId
* @param max
* @param onSuccessCallback
* @param onErrorCallback
*/
void listConnections(String userId, int max, Consumer<List<User>> onSuccessCallback, Consumer<Throwable> onErrorCallback);
}