Update tag and tagdata deletion

pull/848/head
Alex Baker 5 years ago
parent 3f71329f61
commit 3d83bd381b

@ -256,8 +256,8 @@ public class Upgrader {
}
private void removeDuplicateTagData(List<TagData> tagData) {
for (int i = 1; i < tagData.size(); i++) {
tagDataDao.delete(tagData.get(i).getId());
if (tagData.size() > 1) {
tagDataDao.delete(tagData.subList(1, tagData.size()));
}
}
@ -265,9 +265,9 @@ public class Upgrader {
List<Tag> metadatas = tagDao.getByTagUid(uuid);
ImmutableListMultimap<Long, Tag> metadataByTask = Multimaps.index(metadatas, Tag::getTask);
for (Long key : metadataByTask.keySet()) {
ImmutableList<Tag> tagData = metadataByTask.get(key);
for (int i = 1; i < tagData.size(); i++) {
tagDao.deleteById(tagData.get(i).getId());
ImmutableList<Tag> tags = metadataByTask.get(key);
if (tags.size() > 1) {
tagDao.delete(tags.subList(1, tags.size()));
}
}
}

@ -166,8 +166,7 @@ public class TagSettingsActivity extends BaseListSettingsActivity {
protected void delete() {
if (tagData != null) {
String uuid = tagData.getRemoteId();
tagDao.deleteTag(uuid);
tagDataDao.delete(tagData.getId());
tagDataDao.delete(tagData);
setResult(
RESULT_OK,
new Intent(TaskListFragment.ACTION_DELETED).putExtra(EXTRA_TAG_UUID, uuid));

@ -6,6 +6,7 @@ import static com.google.common.collect.Sets.difference;
import static com.google.common.collect.Sets.newHashSet;
import androidx.room.Dao;
import androidx.room.Delete;
import androidx.room.Insert;
import androidx.room.Query;
import androidx.room.Transaction;
@ -20,9 +21,6 @@ public abstract class TagDao {
@Query("UPDATE tags SET name = :name WHERE tag_uid = :tagUid")
public abstract void rename(String tagUid, String name);
@Query("DELETE FROM tags WHERE tag_uid = :tagUid")
public abstract void deleteTag(String tagUid);
@Insert
public abstract void insert(Tag tag);
@ -44,8 +42,8 @@ public abstract class TagDao {
@Query("SELECT * FROM tags WHERE task = :taskId AND tag_uid = :tagUid")
public abstract Tag getTagByTaskAndTagUid(long taskId, String tagUid);
@Query("DELETE FROM tags WHERE _id = :id")
public abstract void deleteById(long id);
@Delete
public abstract void delete(List<Tag> tags);
@Transaction
public boolean applyTags(Task task, TagDataDao tagDataDao,List<TagData> current) {

@ -2,8 +2,10 @@ package org.tasks.data;
import androidx.lifecycle.LiveData;
import androidx.room.Dao;
import androidx.room.Delete;
import androidx.room.Insert;
import androidx.room.Query;
import androidx.room.Transaction;
import androidx.room.Update;
import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.helper.UUIDHelper;
@ -37,8 +39,20 @@ public abstract class TagDataDao {
@Query("SELECT * FROM tagdata WHERE name IS NOT NULL AND name != '' ORDER BY UPPER(name) ASC")
public abstract List<TagData> tagDataOrderedByName();
@Query("DELETE FROM tagdata WHERE _id = :id")
public abstract void delete(Long id);
@Delete
abstract void deleteTagData(TagData tagData);
@Query("DELETE FROM tags WHERE tag_uid = :tagUid")
abstract void deleteTags(String tagUid);
@Transaction
public void delete(TagData tagData) {
deleteTags(tagData.getRemoteId());
deleteTagData(tagData);
}
@Delete
public abstract void delete(List<TagData> tagData);
@Query("SELECT tagdata.* FROM tagdata "
+ "INNER JOIN tags ON tags.tag_uid = tagdata.remoteId "

Loading…
Cancel
Save