Better consult an SQL guru like Leo ...

pull/157/head
M66B 5 years ago
parent 2925312631
commit 44a55a677a

@ -60,8 +60,9 @@ public interface DaoAccount {
" AND identity.synchronize) AS identities" +
", CASE WHEN drafts.id IS NULL THEN 0 ELSE 1 END AS drafts" +
" FROM account" +
" LEFT JOIN folder AS drafts ON drafts.account = account.id AND drafts.type = '" + EntityFolder.DRAFTS + "'" +
" LEFT JOIN folder AS drafts ON drafts.account = account.id" +
" WHERE :all OR account.synchronize" +
" AND drafts.type = '" + EntityFolder.DRAFTS + "'" +
" GROUP BY account.id" +
" ORDER BY CASE WHEN :all THEN 0 ELSE account.`order` END" +
", CASE WHEN :all THEN 0 ELSE account.`primary` END DESC" +

@ -40,10 +40,13 @@ public interface DaoFolder {
", COUNT(DISTINCT operation.id) AS executing" +
" FROM folder" +
" LEFT JOIN account ON account.id = folder.account" +
" LEFT JOIN message ON message.folder = folder.id AND message.ui_hide = 0" +
" LEFT JOIN rule ON rule.folder = folder.id AND rule.enabled" +
" LEFT JOIN operation ON operation.folder = folder.id AND operation.state = 'executing'" +
" LEFT JOIN message ON message.folder = folder.id" +
" LEFT JOIN rule ON rule.folder = folder.id" +
" LEFT JOIN operation ON operation.folder = folder.id" +
" WHERE folder.account = :account AND account.synchronize" +
" AND message.ui_hide = 0" +
" AND rule.enabled" +
" AND operation.state = 'executing'" +
" GROUP BY folder.id")
List<TupleFolderEx> getFoldersEx(long account);
@ -75,13 +78,16 @@ public interface DaoFolder {
", COUNT(DISTINCT operation.id) AS executing" +
" FROM folder" +
" LEFT JOIN account ON account.id = folder.account" +
" LEFT JOIN message ON message.folder = folder.id AND message.ui_hide = 0" +
" LEFT JOIN rule ON rule.folder = folder.id AND rule.enabled" +
" LEFT JOIN operation ON operation.folder = folder.id AND operation.state = 'executing'" +
" LEFT JOIN message ON message.folder = folder.id" +
" LEFT JOIN rule ON rule.folder = folder.id" +
" LEFT JOIN operation ON operation.folder = folder.id" +
" WHERE CASE WHEN :account IS NULL" +
" THEN folder.unified AND account.synchronize" +
" ELSE folder.account = :account AND account.synchronize" +
" END" +
" AND message.ui_hide = 0" +
" AND rule.enabled" +
" AND operation.state = 'executing'" +
" GROUP BY folder.id")
LiveData<List<TupleFolderEx>> liveFolders(Long account);
@ -94,11 +100,14 @@ public interface DaoFolder {
", COUNT(DISTINCT operation.id) AS executing" +
" FROM folder" +
" JOIN account ON account.id = folder.account" +
" LEFT JOIN message ON message.folder = folder.id AND message.ui_hide = 0" +
" LEFT JOIN rule ON rule.folder = folder.id AND rule.enabled" +
" LEFT JOIN operation ON operation.folder = folder.id AND operation.state = 'executing'" +
" LEFT JOIN message ON message.folder = folder.id" +
" LEFT JOIN rule ON rule.folder = folder.id" +
" LEFT JOIN operation ON operation.folder = folder.id" +
" WHERE account.`synchronize`" +
" AND folder.unified" +
" AND message.ui_hide = 0" +
" AND rule.enabled" +
" AND operation.state = 'executing'" +
" GROUP BY folder.id")
LiveData<List<TupleFolderEx>> liveUnified();
@ -109,9 +118,9 @@ public interface DaoFolder {
", (SELECT COUNT(operation.id) FROM operation WHERE operation.folder = folder.id AND operation.state = 'executing') AS executing" +
" FROM folder" +
" LEFT JOIN account ON account.id = folder.account" +
" LEFT JOIN message ON message.folder = folder.id AND message.ui_hide = 0" +
" WHERE account.id IS NULL" +
" OR (account.`synchronize` AND folder.navigation)" +
" LEFT JOIN message ON message.folder = folder.id" +
" WHERE (account.id IS NULL OR (account.`synchronize` AND folder.navigation))" +
" AND message.ui_hide = 0" +
" GROUP BY folder.id")
LiveData<List<TupleFolderNav>> liveNavigation();
@ -136,10 +145,13 @@ public interface DaoFolder {
", COUNT(DISTINCT operation.id) AS executing" +
" FROM folder" +
" LEFT JOIN account ON account.id = folder.account" +
" LEFT JOIN message ON message.folder = folder.id AND message.ui_hide = 0" +
" LEFT JOIN rule ON rule.folder = folder.id AND rule.enabled" +
" LEFT JOIN operation ON operation.folder = folder.id AND operation.state = 'executing'" +
" LEFT JOIN message ON message.folder = folder.id" +
" LEFT JOIN rule ON rule.folder = folder.id" +
" LEFT JOIN operation ON operation.folder = folder.id" +
" WHERE folder.id = :id" +
" AND message.ui_hide = 0" +
" AND rule.enabled" +
" AND operation.state = 'executing'" +
" GROUP BY folder.id")
LiveData<TupleFolderEx> liveFolderEx(long id);

@ -36,8 +36,9 @@ public interface DaoIdentity {
@Query("SELECT identity.*, account.name AS accountName FROM identity" +
" JOIN account ON account.id = identity.account" +
" JOIN folder ON folder.account = identity.account AND folder.type = '" + EntityFolder.DRAFTS + "'" +
" JOIN folder ON folder.account = identity.account" +
" WHERE (:account IS NULL OR identity.account = :account)" +
" AND folder.type = '" + EntityFolder.DRAFTS + "'" +
" AND identity.synchronize" +
" AND account.synchronize" +
" ORDER BY account.`order`, account.`primary` DESC, account.name COLLATE NOCASE" +
@ -46,8 +47,9 @@ public interface DaoIdentity {
@Query("SELECT identity.*, account.name AS accountName FROM identity" +
" JOIN account ON account.id = identity.account" +
" JOIN folder ON folder.account = identity.account AND folder.type = '" + EntityFolder.DRAFTS + "'" +
" JOIN folder ON folder.account = identity.account" +
" WHERE (:account IS NULL OR identity.account = :account)" +
" AND folder.type = '" + EntityFolder.DRAFTS + "'" +
" AND identity.synchronize" +
" AND account.synchronize")
LiveData<List<TupleIdentityEx>> liveComposableIdentities(Long account);

Loading…
Cancel
Save