Use interfaces for itemDao et AccountDao

This commit is contained in:
Shinokuni 2020-02-22 19:56:19 +01:00
parent 1676e9f637
commit ad6a682fd6
2 changed files with 23 additions and 23 deletions

View File

@ -11,29 +11,29 @@ import java.util.List;
import io.reactivex.Single; import io.reactivex.Single;
@Dao @Dao
public abstract class AccountDao implements BaseDao<Account> { public interface AccountDao extends BaseDao<Account> {
@Query("Select * from Account") @Query("Select * from Account")
public abstract LiveData<List<Account>> selectAllAsync(); LiveData<List<Account>> selectAllAsync();
@Query("Select * from Account") @Query("Select * from Account")
public abstract List<Account> selectAll(); List<Account> selectAll();
@Query("Update Account set last_modified = :lastModified Where id = :accountId") @Query("Update Account set last_modified = :lastModified Where id = :accountId")
public abstract void updateLastModified(int accountId, long lastModified); void updateLastModified(int accountId, long lastModified);
@Query("Update Account set current_account = 0 Where id Not In (:accountId)") @Query("Update Account set current_account = 0 Where id Not In (:accountId)")
public abstract void deselectOldCurrentAccount(int accountId); void deselectOldCurrentAccount(int accountId);
@Query("Update Account set current_account = 1 Where id = :accountId") @Query("Update Account set current_account = 1 Where id = :accountId")
public abstract void setCurrentAccount(int accountId); void setCurrentAccount(int accountId);
@Query("Select count(*) From Account Where account_type = :accountType") @Query("Select count(*) From Account Where account_type = :accountType")
public abstract Integer getAccountCountByType(int accountType); Integer getAccountCountByType(int accountType);
@Query("Select count(*) From Account") @Query("Select count(*) From Account")
public abstract Single<Integer> getAccountCount(); Single<Integer> getAccountCount();
@Query("Update Account set writeToken = :writeToken Where id = :accountId") @Query("Update Account set writeToken = :writeToken Where id = :accountId")
public abstract void updateWriteToken(int accountId, String writeToken); void updateWriteToken(int accountId, String writeToken);
} }

View File

@ -19,16 +19,16 @@ import java.util.List;
import io.reactivex.Completable; import io.reactivex.Completable;
@Dao @Dao
public abstract class ItemDao implements BaseDao<Item> { public interface ItemDao extends BaseDao<Item> {
@RawQuery(observedEntities = {Item.class, Folder.class, Feed.class}) @RawQuery(observedEntities = {Item.class, Folder.class, Feed.class})
public abstract DataSource.Factory<Integer, ItemWithFeed> selectAll(SupportSQLiteQuery query); DataSource.Factory<Integer, ItemWithFeed> selectAll(SupportSQLiteQuery query);
@Query("Select case When :guid In (Select guid From Item Inner Join Feed on Item.feed_id = Feed.id and account_id = :accountId) Then 1 else 0 end") @Query("Select case When :guid In (Select guid From Item Inner Join Feed on Item.feed_id = Feed.id and account_id = :accountId) Then 1 else 0 end")
public abstract boolean itemExists(String guid, int accountId); boolean itemExists(String guid, int accountId);
@Query("Select case When :remoteId In (Select remoteId from Item) And :feedId In (Select feed_id From Item) Then 1 else 0 end") @Query("Select case When :remoteId In (Select remoteId from Item) And :feedId In (Select feed_id From Item) Then 1 else 0 end")
public abstract boolean remoteItemExists(String remoteId, int feedId); boolean remoteItemExists(String remoteId, int feedId);
/** /**
* Set an item read or unread * Set an item read or unread
@ -38,35 +38,35 @@ public abstract class ItemDao implements BaseDao<Item> {
* @param readChanged * @param readChanged
*/ */
@Query("Update Item Set read_changed = :readChanged, read = :read Where id = :itemId") @Query("Update Item Set read_changed = :readChanged, read = :read Where id = :itemId")
public abstract Completable setReadState(int itemId, boolean read, boolean readChanged); Completable setReadState(int itemId, boolean read, boolean readChanged);
@Query("Update Item set read_changed = 1, read = :readState Where feed_id In (Select id From Feed Where account_id = :accountId)") @Query("Update Item set read_changed = 1, read = :readState Where feed_id In (Select id From Feed Where account_id = :accountId)")
public abstract Completable setAllItemsReadState(int readState, int accountId); Completable setAllItemsReadState(int readState, int accountId);
@Query("Update Item set read_changed = 1, read = :readState Where feed_id = :feedId") @Query("Update Item set read_changed = 1, read = :readState Where feed_id = :feedId")
public abstract Completable setAllFeedItemsReadState(int feedId, int readState); Completable setAllFeedItemsReadState(int feedId, int readState);
@Query("Update Item set read_it_later = 1 Where id = :itemId") @Query("Update Item set read_it_later = 1 Where id = :itemId")
public abstract Completable setReadItLater(int itemId); Completable setReadItLater(int itemId);
@Query("Select count(*) From Item Where feed_id = :feedId And read = 0") @Query("Select count(*) From Item Where feed_id = :feedId And read = 0")
public abstract int getUnreadCount(int feedId); int getUnreadCount(int feedId);
@SuppressWarnings(RoomWarnings.CURSOR_MISMATCH) @SuppressWarnings(RoomWarnings.CURSOR_MISMATCH)
@Query("Select title, Item.description, content, link, pub_date, image_link, author, read, text_color, " + @Query("Select title, Item.description, content, link, pub_date, image_link, author, read, text_color, " +
"background_color, read_time, Feed.name, Feed.id as feedId, siteUrl, Folder.id as folder_id, " + "background_color, read_time, Feed.name, Feed.id as feedId, siteUrl, Folder.id as folder_id, " +
"Folder.name as folder_name from Item Inner Join Feed On Item.feed_id = Feed.id Left Join Folder on Folder.id = Feed.folder_id Where Item.id = :id") "Folder.name as folder_name from Item Inner Join Feed On Item.feed_id = Feed.id Left Join Folder on Folder.id = Feed.folder_id Where Item.id = :id")
public abstract LiveData<ItemWithFeed> getItemById(int id); LiveData<ItemWithFeed> getItemById(int id);
@Query("Select Item.remoteId From Item Inner Join Feed On Item.feed_id = Feed.id Where read_changed = 1 And read = 1 And account_id = :accountId") @Query("Select Item.remoteId From Item Inner Join Feed On Item.feed_id = Feed.id Where read_changed = 1 And read = 1 And account_id = :accountId")
public abstract List<String> getReadChanges(int accountId); List<String> getReadChanges(int accountId);
@Query("Select Item.remoteId From Item Inner Join Feed On Item.feed_id = Feed.id Where read_changed = 1 And read = 0 And account_id = :accountId") @Query("Select Item.remoteId From Item Inner Join Feed On Item.feed_id = Feed.id Where read_changed = 1 And read = 0 And account_id = :accountId")
public abstract List<String> getUnreadChanges(int accountId); List<String> getUnreadChanges(int accountId);
@Query("Update Item set read_changed = 0 Where feed_id in (Select id From Feed Where account_id = :accountId)") @Query("Update Item set read_changed = 0 Where feed_id in (Select id From Feed Where account_id = :accountId)")
public abstract void resetReadChanges(int accountId); void resetReadChanges(int accountId);
@Query("Update Item set read = :read Where remoteId = :remoteId") @Query("Update Item set read = :read Where remoteId = :remoteId")
public abstract void setReadState(String remoteId, boolean read); void setReadState(String remoteId, boolean read);
} }