Convert refresh query to Room

pull/618/head
Alex Baker 6 years ago
parent 2cd63f89b2
commit 198c9a4fce

@ -35,6 +35,8 @@ import java.util.concurrent.atomic.AtomicBoolean;
import timber.log.Timber;
import static com.todoroo.andlib.utility.DateUtilities.now;
/**
* Data Access layer for {@link Task}-related operations.
*
@ -60,10 +62,13 @@ public abstract class TaskDao {
this.preferences = preferences;
}
public List<Task> selectActive(Criterion criterion) {
return query(Query.select(Task.PROPERTIES).where(Criterion.and(TaskCriteria.isActive(), criterion))).toList();
public List<Task> needsRefresh() {
return needsRefresh(now());
}
@android.arch.persistence.room.Query("SELECT * FROM tasks WHERE completed = 0 AND deleted = 0 AND (hideUntil > :now OR dueDate > :now)")
abstract List<Task> needsRefresh(long now);
@android.arch.persistence.room.Query("SELECT * FROM tasks WHERE _id = :id LIMIT 1")
public abstract Task fetch(long id);
@ -170,9 +175,9 @@ public abstract class TaskDao {
public ContentValues createNew(Task item) {
if(!item.containsValue(Task.CREATION_DATE)) {
item.setCreationDate(DateUtilities.now());
item.setCreationDate(now());
}
item.setModificationDate(DateUtilities.now());
item.setModificationDate(now());
// set up task defaults
if(!item.containsValue(Task.IMPORTANCE)) {
@ -247,7 +252,7 @@ public abstract class TaskDao {
}
if(!TaskApiDao.insignificantChange(values)) {
if(!values.containsKey(Task.MODIFICATION_DATE.name)) {
item.setModificationDate(DateUtilities.now());
item.setModificationDate(now());
}
}
DatabaseChangeOp update = new DatabaseChangeOp() {
@ -273,7 +278,7 @@ public abstract class TaskDao {
*/
public void setComplete(Task item, boolean completed) {
if(completed) {
item.setCompletionDate(DateUtilities.now());
item.setCompletionDate(now());
} else {
item.setCompletionDate(0L);
}

@ -4,7 +4,6 @@ import android.content.Context;
import android.content.Intent;
import android.support.annotation.NonNull;
import com.todoroo.andlib.sql.Criterion;
import com.todoroo.astrid.dao.TaskDao;
import com.todoroo.astrid.data.Task;
@ -17,8 +16,6 @@ import javax.inject.Inject;
import timber.log.Timber;
import static java.lang.System.currentTimeMillis;
public class BackgroundScheduler extends InjectingJobIntentService {
public static void enqueueWork(Context context) {
@ -44,8 +41,7 @@ public class BackgroundScheduler extends InjectingJobIntentService {
jobManager.scheduleMidnightRefresh();
refreshScheduler.clear();
long now = currentTimeMillis();
for (Task task : taskDao.selectActive(Criterion.or(Task.HIDE_UNTIL.gt(now), Task.DUE_DATE.gt(now)))) {
for (Task task : taskDao.needsRefresh()) {
refreshScheduler.scheduleRefresh(task);
}
}

Loading…
Cancel
Save