Put Pit Log under version control so the app and sync server can live on git.
This commit is contained in:
commit
1030bac79e
79 files changed
+8463
No files matched your search
@@ -0,0 +1,143 @@
|
||||
package com.racingapp.pitlog.data
|
||||
|
||||
import androidx.room.Dao
|
||||
import androidx.room.Insert
|
||||
import androidx.room.Query
|
||||
import androidx.room.Transaction
|
||||
import androidx.room.Update
|
||||
import kotlinx.coroutines.flow.Flow
|
||||
|
||||
@Dao
|
||||
interface RaceDao {
|
||||
@Transaction
|
||||
@Query("SELECT * FROM race_nights WHERE deleted = 0 AND carId = :carId ORDER BY dateEpochDay DESC, id DESC")
|
||||
fun observeNightsWithRuns(carId: Long): Flow<List<NightWithRuns>>
|
||||
|
||||
@Query("SELECT * FROM race_nights WHERE id = :id AND deleted = 0")
|
||||
fun observeNight(id: Long): Flow<RaceNight?>
|
||||
|
||||
@Query("SELECT * FROM race_nights WHERE id = :id AND deleted = 0")
|
||||
suspend fun getNight(id: Long): RaceNight?
|
||||
|
||||
@Query("SELECT * FROM race_nights WHERE id = :id")
|
||||
suspend fun nightById(id: Long): RaceNight?
|
||||
|
||||
@Query("SELECT * FROM race_nights WHERE syncId = :syncId AND carId = :carId LIMIT 1")
|
||||
suspend fun nightBySyncId(syncId: String, carId: Long): RaceNight?
|
||||
|
||||
@Query("SELECT * FROM race_nights WHERE pending = 1 AND carId = :carId")
|
||||
suspend fun pendingNights(carId: Long): List<RaceNight>
|
||||
|
||||
@Query("SELECT * FROM race_nights WHERE syncId = '' AND carId = :carId")
|
||||
suspend fun nightsMissingSyncId(carId: Long): List<RaceNight>
|
||||
|
||||
@Query(
|
||||
"""
|
||||
SELECT trackName FROM race_nights
|
||||
WHERE deleted = 0 AND carId = :carId AND TRIM(trackName) != ''
|
||||
GROUP BY trackName COLLATE NOCASE
|
||||
ORDER BY MAX(dateEpochDay) DESC, trackName COLLATE NOCASE
|
||||
""",
|
||||
)
|
||||
fun observeTrackNames(carId: Long): Flow<List<String>>
|
||||
|
||||
@Insert
|
||||
suspend fun insertNight(night: RaceNight): Long
|
||||
|
||||
@Update
|
||||
suspend fun updateNight(night: RaceNight)
|
||||
|
||||
@Query("SELECT * FROM runs WHERE nightId = :nightId AND deleted = 0 ORDER BY recordedAt DESC")
|
||||
fun observeRuns(nightId: Long): Flow<List<RunLog>>
|
||||
|
||||
@Query("SELECT * FROM runs WHERE nightId = :nightId")
|
||||
suspend fun runsForNight(nightId: Long): List<RunLog>
|
||||
|
||||
@Query("SELECT * FROM runs WHERE id = :id AND deleted = 0")
|
||||
fun observeRun(id: Long): Flow<RunLog?>
|
||||
|
||||
@Query("SELECT * FROM runs WHERE id = :id AND deleted = 0")
|
||||
suspend fun getRun(id: Long): RunLog?
|
||||
|
||||
@Query("SELECT * FROM runs WHERE id = :id")
|
||||
suspend fun runById(id: Long): RunLog?
|
||||
|
||||
@Query("SELECT * FROM runs WHERE syncId = :syncId LIMIT 1")
|
||||
suspend fun runBySyncId(syncId: String): RunLog?
|
||||
|
||||
@Query(
|
||||
"""
|
||||
SELECT * FROM runs
|
||||
WHERE pending = 1 AND nightId IN (SELECT id FROM race_nights WHERE carId = :carId)
|
||||
""",
|
||||
)
|
||||
suspend fun pendingRuns(carId: Long): List<RunLog>
|
||||
|
||||
@Query(
|
||||
"""
|
||||
SELECT * FROM runs
|
||||
WHERE (syncId = '' OR nightSyncId = '')
|
||||
AND nightId IN (SELECT id FROM race_nights WHERE carId = :carId)
|
||||
""",
|
||||
)
|
||||
suspend fun runsMissingSyncId(carId: Long): List<RunLog>
|
||||
|
||||
@Query("SELECT * FROM runs WHERE nightId = :nightId AND deleted = 0 ORDER BY recordedAt DESC LIMIT 1")
|
||||
suspend fun latestRun(nightId: Long): RunLog?
|
||||
|
||||
@Query(
|
||||
"SELECT * FROM runs WHERE nightId = :nightId AND deleted = 0 AND recordedAt < :before ORDER BY recordedAt DESC LIMIT 1",
|
||||
)
|
||||
suspend fun previousRun(nightId: Long, before: Long): RunLog?
|
||||
|
||||
@Insert
|
||||
suspend fun insertRun(run: RunLog): Long
|
||||
|
||||
@Update
|
||||
suspend fun updateRun(run: RunLog)
|
||||
|
||||
@Query("SELECT * FROM setup_sheets WHERE deleted = 0 AND carId = :carId ORDER BY recordedAt ASC, id ASC")
|
||||
fun observeSetupSheets(carId: Long): Flow<List<SetupSheet>>
|
||||
|
||||
@Query("SELECT * FROM setup_sheets WHERE id = :id")
|
||||
suspend fun sheetById(id: Long): SetupSheet?
|
||||
|
||||
@Query("SELECT * FROM setup_sheets WHERE syncId = :syncId AND carId = :carId LIMIT 1")
|
||||
suspend fun sheetBySyncId(syncId: String, carId: Long): SetupSheet?
|
||||
|
||||
@Query("SELECT * FROM setup_sheets WHERE pending = 1 AND carId = :carId")
|
||||
suspend fun pendingSheets(carId: Long): List<SetupSheet>
|
||||
|
||||
@Query("SELECT * FROM setup_sheets WHERE syncId = '' AND carId = :carId")
|
||||
suspend fun sheetsMissingSyncId(carId: Long): List<SetupSheet>
|
||||
|
||||
@Insert
|
||||
suspend fun insertSetupSheet(sheet: SetupSheet): Long
|
||||
|
||||
@Update
|
||||
suspend fun updateSetupSheet(sheet: SetupSheet)
|
||||
|
||||
@Query("SELECT * FROM cars WHERE deleted = 0 ORDER BY id ASC")
|
||||
fun observeCars(): Flow<List<Car>>
|
||||
|
||||
@Query("SELECT * FROM cars ORDER BY id ASC")
|
||||
suspend fun everyCar(): List<Car>
|
||||
|
||||
@Query("SELECT * FROM cars WHERE deleted = 0 ORDER BY id ASC")
|
||||
suspend fun activeCars(): List<Car>
|
||||
|
||||
@Query("SELECT * FROM cars WHERE id = :id")
|
||||
fun observeCar(id: Long): Flow<Car?>
|
||||
|
||||
@Query("SELECT * FROM cars WHERE id = :id")
|
||||
suspend fun carById(id: Long): Car?
|
||||
|
||||
@Query("SELECT * FROM cars WHERE token = :token LIMIT 1")
|
||||
suspend fun carByToken(token: String): Car?
|
||||
|
||||
@Insert
|
||||
suspend fun insertCar(car: Car): Long
|
||||
|
||||
@Update
|
||||
suspend fun updateCar(car: Car)
|
||||
}
|
||||
Reference in new issue
Block a user