X-Git-Url: https://git.ktnx.net/?p=mobile-ledger.git;a=blobdiff_plain;f=app%2Fsrc%2Fmain%2Fjava%2Fnet%2Fktnx%2Fmobileledger%2Fdao%2FAccountDAO.java;h=0c581787a30a2fac55c605674904eebdd7441995;hp=f37b940b1df9e9377325374e277f5ba96107c3cf;hb=833544eb24cb630dc1ce221e4aa3dedb3f6341e3;hpb=5df10dc0b58df4d4be4e9ab34f1e0f477ca46766 diff --git a/app/src/main/java/net/ktnx/mobileledger/dao/AccountDAO.java b/app/src/main/java/net/ktnx/mobileledger/dao/AccountDAO.java index f37b940b..0c581787 100644 --- a/app/src/main/java/net/ktnx/mobileledger/dao/AccountDAO.java +++ b/app/src/main/java/net/ktnx/mobileledger/dao/AccountDAO.java @@ -75,11 +75,14 @@ public abstract class AccountDAO extends BaseDAO { @Delete public abstract void deleteSync(List items); - @Query("SELECT * FROM accounts WHERE profile_id=:profileId") + @Query("DELETE FROM accounts") + public abstract void deleteAllSync(); + + @Query("SELECT * FROM accounts WHERE profile_id=:profileId ORDER BY name") public abstract LiveData> getAll(long profileId); @Transaction - @Query("SELECT * FROM accounts WHERE profile_id = :profileId") + @Query("SELECT * FROM accounts WHERE profile_id = :profileId ORDER BY name") public abstract LiveData> getAllWithAmounts(long profileId); @Query("SELECT * FROM accounts WHERE id=:id") @@ -106,9 +109,9 @@ public abstract class AccountDAO extends BaseDAO { " ELSE 9 END AS ordering " + "FROM accounts " + "WHERE profile_id=:profileId AND name_upper LIKE '%%'||:term||'%%' " + "ORDER BY ordering, name_upper, rowid ") - public abstract LiveData> lookupInProfileByName(long profileId, - @NonNull - String term); + public abstract LiveData> lookupNamesInProfileByName(long profileId, + @NonNull + String term); @Query("SELECT name, CASE WHEN name_upper LIKE :term||'%%' THEN 1 " + " WHEN name_upper LIKE '%%:'||:term||'%%' THEN 2 " + @@ -116,22 +119,32 @@ public abstract class AccountDAO extends BaseDAO { " ELSE 9 END AS ordering " + "FROM accounts " + "WHERE profile_id=:profileId AND name_upper LIKE '%%'||:term||'%%' " + "ORDER BY ordering, name_upper, rowid ") - public abstract List lookupInProfileByNameSync(long profileId, - @NonNull String term); + public abstract List lookupNamesInProfileByNameSync(long profileId, + @NonNull String term); + + @Transaction + @Query("SELECT * FROM accounts " + + "WHERE profile_id=:profileId AND name_upper LIKE '%%'||:term||'%%' " + + "ORDER BY CASE WHEN name_upper LIKE :term||'%%' THEN 1 " + + " WHEN name_upper LIKE '%%:'||:term||'%%' THEN 2 " + + " WHEN name_upper LIKE '%% '||:term||'%%' THEN 3 " + + " ELSE 9 END, name_upper, rowid ") + public abstract List lookupWithAmountsInProfileByNameSync(long profileId, + @NonNull String term); @Query("SELECT DISTINCT name, CASE WHEN name_upper LIKE :term||'%%' THEN 1 " + " WHEN name_upper LIKE '%%:'||:term||'%%' THEN 2 " + " WHEN name_upper LIKE '%% '||:term||'%%' THEN 3 " + " ELSE 9 END AS ordering " + "FROM accounts " + "WHERE name_upper LIKE '%%'||:term||'%%' " + "ORDER BY ordering, name_upper, rowid ") - public abstract LiveData> lookupByName(@NonNull String term); + public abstract LiveData> lookupNamesByName(@NonNull String term); @Query("SELECT DISTINCT name, CASE WHEN name_upper LIKE :term||'%%' THEN 1 " + " WHEN name_upper LIKE '%%:'||:term||'%%' THEN 2 " + " WHEN name_upper LIKE '%% '||:term||'%%' THEN 3 " + " ELSE 9 END AS ordering " + "FROM accounts " + "WHERE name_upper LIKE '%%'||:term||'%%' " + "ORDER BY ordering, name_upper, rowid ") - public abstract List lookupByNameSync(@NonNull String term); + public abstract List lookupNamesByNameSync(@NonNull String term); @Query("SELECT * FROM accounts WHERE profile_id = :profileId") public abstract List allForProfileSync(long profileId);