jeudi 14 juillet 2016

Repository of simple and detailed pojos

I have few methods on server-side:

@GET("/api/Queue/Index")
Observable<List<QueueCarItem>> getQueueItems();
@GET("/api/Queue/Details/{id}")
Observable<DetailedQueueCarItem> getQueueItemDetails(@Path("id") int id);
@POST("/api/Queue/FastAdd")
Observable<Void> fastAdd(@Body QuickAddCarRequest body);
@POST("/api/Queue/Create")
Observable<Void> create(@Body EditCarRequest body);
@PUT("/api/Queue/Edit/{id}")
Observable<Void> edit(@Path("id") int id, @Body EditCarRequest body);

There is two main kind of data:

  • QueueCarItem returned by /api/Queue/Index and
  • DetailedQueueCarItem returned by /api/Queue/Details/{id}

Now I use QueueCarItemsRepository to get/update/cache data:

public interface QueueCarItemsRepository extends ReadOnlyRepository<QueueCarItem> {
    Observable<Void> put(QueueCarItem objects);
    Observable<Void> put(TinyCarInfo objects, boolean skipRegNumberValidation);
    Observable<DetailedQueueCarItem> getDetailedById(int id);
    Observable<Void> changeById(int id, QueueCarItem object);
    Observable<Void> remove(int id);
}


public interface ReadOnlyRepository<D> {
    Observable<List<D>> forceUpdate();
    Observable<List<D>> getAll();
    RxBus<DataEvent> getDataEventBus();
    boolean isUpdating();
}

Is it okay? I think that it is a bad implementation. Must I split this repo into Repo<QueueCarItem> and Repo<DetailedQueueCarItem>? Which of them must provide create/update/delete methods to edit queue? Any better idea? :)

Aucun commentaire:

Enregistrer un commentaire