diff options
author | desperateCoder <echotodevnull@gmail.com> | 2019-07-06 01:16:22 +0300 |
---|---|---|
committer | desperateCoder <echotodevnull@gmail.com> | 2019-07-06 01:16:22 +0300 |
commit | eab67ada163fcf9703311b6578f2960df478c777 (patch) | |
tree | 12a2bd83776bc843b9668507b21b1b7885ec488d /app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/db | |
parent | 906bae9f0821af5ab341ebb5c4e63ab1938779bc (diff) |
almost done i hope, but still buggy (delete label and back -> card deleted on server?!)
Diffstat (limited to 'app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/db')
3 files changed, 56 insertions, 1 deletions
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/db/DataBaseAdapter.java b/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/db/DataBaseAdapter.java index 57140f938..2dd90ff35 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/db/DataBaseAdapter.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/db/DataBaseAdapter.java @@ -446,4 +446,28 @@ public class DataBaseAdapter { public Board getBoardByLocalCardIdDirectly(long localCardId) { return db.getBoardDao().getBoardByLocalCardIdDirectly(localCardId); } + + public JoinCardWithLabel getJoinCardWithLabel(Long localLabelId, Long localCardId) { + return db.getJoinCardWithLabelDao().getJoin(localLabelId, localCardId); + } + + public JoinCardWithUser getJoinCardWithUser(Long localUserId, Long localCardId) { + return db.getJoinCardWithUserDao().getJoin(localUserId, localCardId); + } + + public List<JoinCardWithLabel> getAllDeletedLabelJoinsByStackWithRemoteIDs() { + return db.getJoinCardWithLabelDao().getAllDeletedJoinsByStackWithRemoteIDs(); + } + + public List<JoinCardWithUser> getAllDeletedUserJoinsWithRemoteIDs() { + return db.getJoinCardWithUserDao().getDeletedJoinsWithRemoteIDs(); + } + + public void deleteJoinedLabelForCardPhysicallyByRemoteIDs(Long accountId, Long remoteCardId, Long remoteLabelId) { + db.getJoinCardWithLabelDao().deleteJoinedLabelForCardPhysicallyByRemoteIDs(accountId, remoteCardId, remoteLabelId); + } + + public void deleteJoinedUserForCardPhysicallyByRemoteIDs(Long accountId, Long remoteCardId, String userUid) { + db.getJoinCardWithUserDao().deleteJoinedUserForCardPhysicallyByRemoteIDs(accountId, remoteCardId, userUid); + } } diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/db/dao/JoinCardWithLabelDao.java b/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/db/dao/JoinCardWithLabelDao.java index d7b8a9324..3a2600f7b 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/db/dao/JoinCardWithLabelDao.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/db/dao/JoinCardWithLabelDao.java @@ -20,4 +20,18 @@ public interface JoinCardWithLabelDao extends GenericDao<JoinCardWithLabel> { @Query("select labelId from joincardwithlabel WHERE cardId = :localCardId and labelId IN (:localLabelIds) and status <> 3") // not LOCAL_DELETED List<Long> filterDeleted(long localCardId, List<Long> localLabelIds); + + @Query("select * from joincardwithlabel WHERE cardId = :localCardId and labelId = :localLabelId") + JoinCardWithLabel getJoin(Long localLabelId, Long localCardId); + + @Query("select l.id as labelId, c.id as cardId, j.status from joincardwithlabel j " + + "inner join card c on j.cardId = c.localId " + + "inner join label l on j.labelId = l.localId " + + "WHERE j.status <> 1") // not UP_TO_DATE + List<JoinCardWithLabel> getAllDeletedJoinsByStackWithRemoteIDs(); + + @Query("delete from joincardwithlabel " + + "where cardId = (select c.localId from card c where c.accountId = :accountId and c.id = :remoteCardId) " + + "and labelId = (select l.localId from label l where l.accountId = :accountId and l.id = :remoteLabelId)") + void deleteJoinedLabelForCardPhysicallyByRemoteIDs(Long accountId, Long remoteCardId, Long remoteLabelId); }
\ No newline at end of file diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/db/dao/JoinCardWithUserDao.java b/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/db/dao/JoinCardWithUserDao.java index 06e740901..8cdf0c564 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/db/dao/JoinCardWithUserDao.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/db/dao/JoinCardWithUserDao.java @@ -2,11 +2,14 @@ package it.niedermann.nextcloud.deck.persistence.sync.adapters.db.dao; import androidx.room.Dao; import androidx.room.Query; + +import java.util.List; + import it.niedermann.nextcloud.deck.model.JoinCardWithUser; @Dao public interface JoinCardWithUserDao extends GenericDao<JoinCardWithUser> { - @Query("DELETE FROM joincardwithuser WHERE cardId = :localId and status=1") // 1 = up_to_date + @Query("DELETE FROM joincardwithuser WHERE cardId = :localId and status=1") // 1 = UP_TO_DATE void deleteByCardId(long localId); @Query("Update joincardwithuser set status = :status WHERE cardId = :localCardId and userId = :localUserId") @@ -14,4 +17,18 @@ public interface JoinCardWithUserDao extends GenericDao<JoinCardWithUser> { @Query("DELETE FROM joincardwithuser WHERE cardId = :localCardId and userId = :localUserId") void deleteByCardIdAndUserIdPhysically(long localCardId, long localUserId); + + @Query("select * FROM joincardwithuser WHERE cardId = :localCardId and userId = :localUserId") + JoinCardWithUser getJoin(Long localUserId, Long localCardId); + + @Query("select u.localId as userId, c.id as cardId, j.status from joincardwithuser j " + + "inner join card c on j.cardId = c.localId " + + "inner join user u on j.userId = u.localId " + + "WHERE j.status <> 1") // not UP_TO_DATE + List<JoinCardWithUser> getDeletedJoinsWithRemoteIDs(); + + @Query("delete from joincardwithuser " + + "where cardId = (select c.localId from card c where c.accountId = :accountId and c.id = :remoteCardId) " + + "and userId = (select u.localId from user u where u.accountId = :accountId and u.uid = :userUid)") + void deleteJoinedUserForCardPhysicallyByRemoteIDs(Long accountId, Long remoteCardId, String userUid); }
\ No newline at end of file |