|
|
@ -11,6 +11,7 @@ import com.todoroo.astrid.helper.UUIDHelper
|
|
|
|
import kotlinx.coroutines.sync.Mutex
|
|
|
|
import kotlinx.coroutines.sync.Mutex
|
|
|
|
import kotlinx.coroutines.sync.withLock
|
|
|
|
import kotlinx.coroutines.sync.withLock
|
|
|
|
import org.tasks.R
|
|
|
|
import org.tasks.R
|
|
|
|
|
|
|
|
import org.tasks.data.CaldavAccount.Companion.TYPE_OPENTASKS
|
|
|
|
import org.tasks.date.DateTimeUtils.toAppleEpoch
|
|
|
|
import org.tasks.date.DateTimeUtils.toAppleEpoch
|
|
|
|
import org.tasks.db.DbUtils.dbchunk
|
|
|
|
import org.tasks.db.DbUtils.dbchunk
|
|
|
|
import org.tasks.db.SuspendDbUtils.chunkedMap
|
|
|
|
import org.tasks.db.SuspendDbUtils.chunkedMap
|
|
|
@ -162,9 +163,18 @@ SELECT EXISTS(SELECT 1
|
|
|
|
@Query("SELECT * FROM caldav_lists ORDER BY cdl_name COLLATE NOCASE")
|
|
|
|
@Query("SELECT * FROM caldav_lists ORDER BY cdl_name COLLATE NOCASE")
|
|
|
|
abstract suspend fun getCalendars(): List<CaldavCalendar>
|
|
|
|
abstract suspend fun getCalendars(): List<CaldavCalendar>
|
|
|
|
|
|
|
|
|
|
|
|
@Query("SELECT EXISTS(SELECT 1 FROM caldav_lists WHERE cdl_url IN (:urls))")
|
|
|
|
@Query("""
|
|
|
|
|
|
|
|
SELECT EXISTS(SELECT 1
|
|
|
|
|
|
|
|
FROM caldav_lists
|
|
|
|
|
|
|
|
INNER JOIN caldav_accounts ON cdl_account = cda_uuid
|
|
|
|
|
|
|
|
WHERE cda_account_type != $TYPE_OPENTASKS
|
|
|
|
|
|
|
|
AND cdl_url IN (:urls))
|
|
|
|
|
|
|
|
""")
|
|
|
|
abstract suspend fun anyExist(urls: List<String>): Boolean
|
|
|
|
abstract suspend fun anyExist(urls: List<String>): Boolean
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Query("SELECT COUNT(*) FROM caldav_lists WHERE cdl_account = :account")
|
|
|
|
|
|
|
|
abstract suspend fun listCount(account: String): Int
|
|
|
|
|
|
|
|
|
|
|
|
@Query("SELECT * FROM caldav_lists WHERE cdl_uuid = :uuid LIMIT 1")
|
|
|
|
@Query("SELECT * FROM caldav_lists WHERE cdl_uuid = :uuid LIMIT 1")
|
|
|
|
abstract suspend fun getCalendar(uuid: String): CaldavCalendar?
|
|
|
|
abstract suspend fun getCalendar(uuid: String): CaldavCalendar?
|
|
|
|
|
|
|
|
|
|
|
@ -183,6 +193,15 @@ SELECT EXISTS(SELECT 1
|
|
|
|
@Query("SELECT * FROM caldav_lists WHERE cdl_account = :account AND cdl_url = :url LIMIT 1")
|
|
|
|
@Query("SELECT * FROM caldav_lists WHERE cdl_account = :account AND cdl_url = :url LIMIT 1")
|
|
|
|
abstract suspend fun getCalendarByUrl(account: String, url: String): CaldavCalendar?
|
|
|
|
abstract suspend fun getCalendarByUrl(account: String, url: String): CaldavCalendar?
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Query("""
|
|
|
|
|
|
|
|
SELECT *
|
|
|
|
|
|
|
|
FROM caldav_lists
|
|
|
|
|
|
|
|
INNER JOIN caldav_accounts ON cdl_account = cda_uuid
|
|
|
|
|
|
|
|
WHERE cda_account_type = $TYPE_OPENTASKS
|
|
|
|
|
|
|
|
AND cdl_url = :url
|
|
|
|
|
|
|
|
""")
|
|
|
|
|
|
|
|
abstract suspend fun getOpenTaskCalendarByUrl(url: String): CaldavCalendar?
|
|
|
|
|
|
|
|
|
|
|
|
@Query("SELECT caldav_accounts.* from caldav_accounts"
|
|
|
|
@Query("SELECT caldav_accounts.* from caldav_accounts"
|
|
|
|
+ " INNER JOIN caldav_tasks ON cd_task = :task"
|
|
|
|
+ " INNER JOIN caldav_tasks ON cd_task = :task"
|
|
|
|
+ " INNER JOIN caldav_lists ON cd_calendar = cdl_uuid"
|
|
|
|
+ " INNER JOIN caldav_lists ON cd_calendar = cdl_uuid"
|
|
|
|