package com.example.firstapp.dao
|
|
import androidx.room.*
|
import com.example.firstapp.model.PackageInfo
|
import com.example.firstapp.model.CourierStat
|
import com.example.firstapp.model.DailyStat
|
import kotlinx.coroutines.flow.Flow
|
|
@Dao
|
interface PackageDao {
|
@Query("SELECT * FROM packages WHERE date(receivedTime/1000, 'unixepoch', 'localtime') = date(:date/1000, 'unixepoch', 'localtime') ORDER BY receivedTime DESC")
|
fun getPackagesByDay(date: Long): Flow<List<PackageInfo>>
|
|
@Query("""
|
SELECT * FROM packages
|
WHERE strftime('%Y-%W', receivedTime/1000, 'unixepoch', 'localtime') =
|
strftime('%Y-%W', :date/1000, 'unixepoch', 'localtime')
|
ORDER BY receivedTime DESC
|
""")
|
fun getPackagesByWeek(date: Long): Flow<List<PackageInfo>>
|
|
@Query("""
|
SELECT * FROM CourierStat
|
WHERE EXISTS (
|
SELECT 1 FROM packages p
|
WHERE p.courierName = CourierStat.courierName
|
AND strftime('%Y-%W', p.receivedTime/1000, 'unixepoch', 'localtime') =
|
strftime('%Y-%W', :date/1000, 'unixepoch', 'localtime')
|
)
|
""")
|
fun getCourierStatsByWeek(date: Long): Flow<List<CourierStat>>
|
|
@Query("""
|
SELECT * FROM DailyStat
|
WHERE EXISTS (
|
SELECT 1 FROM packages p
|
WHERE date(p.receivedTime/1000, 'unixepoch', 'localtime') = DailyStat.date
|
AND strftime('%Y-%W', p.receivedTime/1000, 'unixepoch', 'localtime') =
|
strftime('%Y-%W', :date/1000, 'unixepoch', 'localtime')
|
)
|
""")
|
fun getDailyStatsByWeek(date: Long): Flow<List<DailyStat>>
|
|
@Insert(onConflict = OnConflictStrategy.REPLACE)
|
fun insert(packageInfo: PackageInfo)
|
|
@Update
|
fun update(packageInfo: PackageInfo)
|
}
|