class ColumnDatabaseAdapter implements DatabaseAdapter<Column<Receipt>> {

    @NonNull
    @Override
    public Column<Receipt> read(@NonNull Cursor cursor) {
        final int idIndex = cursor.getColumnIndex(AbstractColumnTable.COLUMN_ID);
        final int uuidIndex = cursor.getColumnIndex(AbstractColumnTable.COLUMN_UUID);
        final int typeIndex = cursor.getColumnIndex(AbstractColumnTable.COLUMN_TYPE);
        final int customOrderIndex = cursor.getColumnIndex(AbstractColumnTable.COLUMN_CUSTOM_ORDER_ID);

        final int id = cursor.getInt(idIndex);
        final UUID uuid = UUID.fromString(cursor.getString(uuidIndex));
        final int type = cursor.getInt(typeIndex);
        final SyncState syncState = mSyncStateAdapter.read(cursor);
        final long customOrderId = cursor.getLong(customOrderIndex);
        return new ColumnBuilderFactory<>(mReceiptColumnDefinitions)
                .setColumnId(id)
                .setColumnUuid(uuid)
                .setColumnType(type)
                .setSyncState(syncState)
                .setCustomOrderId(customOrderId)
                .build();
    }

    public  ColumnDatabaseAdapter(@NonNull ColumnDefinitions<Receipt> receiptColumnDefinitions);
    public  ColumnDatabaseAdapter(@NonNull ColumnDefinitions<Receipt> receiptColumnDefinitions, @NonNull SyncStateAdapter syncStateAdapter);

}