class TripTableActionAlterations extends StubTableActionAlterations<Trip> {

    @NonNull
    @Override
    public Single<Trip> postDelete(@Nullable final Trip trip) {
        return Single.fromCallable(() -> {
            if (trip == null) {
                throw new Exception("Post delete failed due to a null trip");
            }

            mReceiptsTable.deleteParentBlocking(trip);
            mDistanceTable.deleteParentBlocking(trip);
            if (!mStorageManager.deleteRecursively(trip.getDirectory())) {
                // TODO: Create clean up script
                Logger.error(this, "Failed to fully delete the underlying data. Create a clean up script to fix this later");
            }
            return trip;
        });
    }

    public  TripTableActionAlterations(@NonNull PersistenceManager persistenceManager);
    public  TripTableActionAlterations(@NonNull DatabaseHelper databaseHelper, @NonNull StorageManager storageManager);
    public  TripTableActionAlterations(@NonNull Table<Trip> tripsTable, @NonNull ReceiptsTable receiptsTable, @NonNull DistanceTable distanceTable,
                                      @NonNull DatabaseHelper databaseHelper, @NonNull StorageManager storageManager);

}