@@ -13,6 +13,7 @@ import org.signal.core.util.delete
1313import org.signal.core.util.insertInto
1414import org.signal.core.util.logging.Log
1515import org.signal.core.util.readToList
16+ import org.signal.core.util.readToSingleObject
1617import org.signal.core.util.requireBlob
1718import org.signal.core.util.requireBoolean
1819import org.signal.core.util.requireInt
@@ -29,6 +30,7 @@ import org.thoughtcrime.securesms.jobmanager.persistence.ConstraintSpec
2930import org.thoughtcrime.securesms.jobmanager.persistence.DependencySpec
3031import org.thoughtcrime.securesms.jobmanager.persistence.FullSpec
3132import org.thoughtcrime.securesms.jobmanager.persistence.JobSpec
33+ import org.thoughtcrime.securesms.jobs.MinimalJobSpec
3234
3335class JobDatabase (
3436 application : Application ,
@@ -183,6 +185,43 @@ class JobDatabase(
183185
184186 @Synchronized
185187 fun getAllJobSpecs (): List <JobSpec > {
188+ return readableDatabase
189+ .select()
190+ .from(Jobs .TABLE_NAME )
191+ .orderBy(" ${Jobs .CREATE_TIME } , ${Jobs .ID } ASC" )
192+ .run ()
193+ .readToList { cursor ->
194+ jobSpecFromCursor(cursor)
195+ }
196+ }
197+
198+ @Synchronized
199+ fun getOldestJobSpecs (limit : Int ): List <JobSpec > {
200+ return readableDatabase
201+ .select()
202+ .from(Jobs .TABLE_NAME )
203+ .orderBy(" ${Jobs .CREATE_TIME } , ${Jobs .ID } ASC" )
204+ .limit(limit)
205+ .run ()
206+ .readToList { cursor ->
207+ jobSpecFromCursor(cursor)
208+ }
209+ }
210+
211+ @Synchronized
212+ fun getJobSpec (id : String ): JobSpec ? {
213+ return readableDatabase
214+ .select()
215+ .from(Jobs .TABLE_NAME )
216+ .where(" ${Jobs .JOB_SPEC_ID } = ?" , id)
217+ .run ()
218+ .readToSingleObject {
219+ jobSpecFromCursor(it)
220+ }
221+ }
222+
223+ @Synchronized
224+ fun getAllMinimalJobSpecs (): List <MinimalJobSpec > {
186225 val columns = arrayOf(
187226 Jobs .ID ,
188227 Jobs .JOB_SPEC_ID ,
@@ -191,18 +230,23 @@ class JobDatabase(
191230 Jobs .CREATE_TIME ,
192231 Jobs .LAST_RUN_ATTEMPT_TIME ,
193232 Jobs .NEXT_BACKOFF_INTERVAL ,
194- Jobs .RUN_ATTEMPT ,
195- Jobs .MAX_ATTEMPTS ,
196- Jobs .LIFESPAN ,
197- Jobs .SERIALIZED_DATA ,
198- Jobs .SERIALIZED_INPUT_DATA ,
199233 Jobs .IS_RUNNING ,
200234 Jobs .PRIORITY
201235 )
202236 return readableDatabase
203237 .query(Jobs .TABLE_NAME , columns, null , null , null , null , " ${Jobs .CREATE_TIME } , ${Jobs .ID } ASC" )
204238 .readToList { cursor ->
205- jobSpecFromCursor(cursor)
239+ MinimalJobSpec (
240+ id = cursor.requireNonNullString(Jobs .JOB_SPEC_ID ),
241+ factoryKey = cursor.requireNonNullString(Jobs .FACTORY_KEY ),
242+ queueKey = cursor.requireNonNullString(Jobs .QUEUE_KEY ),
243+ createTime = cursor.requireLong(Jobs .CREATE_TIME ),
244+ lastRunAttemptTime = cursor.requireLong(Jobs .LAST_RUN_ATTEMPT_TIME ),
245+ nextBackoffInterval = cursor.requireLong(Jobs .NEXT_BACKOFF_INTERVAL ),
246+ priority = cursor.requireInt(Jobs .PRIORITY ),
247+ isRunning = cursor.requireBoolean(Jobs .IS_RUNNING ),
248+ isMemoryOnly = false
249+ )
206250 }
207251 }
208252
0 commit comments