Fix duplicate search results

pull/996/head
Alex Baker 6 years ago
parent 8e0ff10ebb
commit 16829dec6c

@ -50,6 +50,23 @@ public class Field extends DBObject<Field> {
return UnaryCriterion.like(this, value); return UnaryCriterion.like(this, value);
} }
public Criterion in(final Query query) {
final Field field = this;
return new Criterion(Operator.in) {
@Override
protected void populate(StringBuilder sb) {
sb.append(field)
.append(SPACE)
.append(Operator.in)
.append(SPACE)
.append(LEFT_PARENTHESIS)
.append(query)
.append(RIGHT_PARENTHESIS);
}
};
}
public <T> Criterion in(List<T> entries) { public <T> Criterion in(List<T> entries) {
final Field field = this; final Field field = this;
return new Criterion(Operator.in) { return new Criterion(Operator.in) {

@ -3,7 +3,7 @@ package com.todoroo.astrid.api;
import android.os.Parcel; import android.os.Parcel;
import android.os.Parcelable; import android.os.Parcelable;
import com.todoroo.andlib.sql.Criterion; import com.todoroo.andlib.sql.Criterion;
import com.todoroo.andlib.sql.Join; import com.todoroo.andlib.sql.Query;
import com.todoroo.andlib.sql.QueryTemplate; import com.todoroo.andlib.sql.QueryTemplate;
import com.todoroo.astrid.data.Task; import com.todoroo.astrid.data.Task;
import org.tasks.data.Tag; import org.tasks.data.Tag;
@ -37,14 +37,16 @@ public class SearchFilter extends Filter {
private static QueryTemplate getQueryTemplate(String query) { private static QueryTemplate getQueryTemplate(String query) {
return new QueryTemplate() return new QueryTemplate()
.join(Join.left(Tag.TABLE, Tag.TASK.eq(Task.ID)))
.where( .where(
Criterion.and( Criterion.and(
Task.DELETION_DATE.eq(0), Task.DELETION_DATE.eq(0),
Criterion.or( Criterion.or(
Task.NOTES.like("%" + query + "%"), Task.NOTES.like("%" + query + "%"),
Task.TITLE.like("%" + query + "%"), Task.TITLE.like("%" + query + "%"),
Tag.NAME.like("%" + query + "%")))); Task.ID.in(
Query.select(Tag.TASK)
.from(Tag.TABLE)
.where(Tag.NAME.like("%" + query + "%"))))));
} }
@Override @Override

Loading…
Cancel
Save