| | |
| | | fun getPackagesByDay(date: Long): Flow<List<Code>> |
| | | |
| | | @Query(""" |
| | | SELECT * FROM code |
| | | WHERE strftime('%Y-%W', substr(createtime, 1, 10)) = |
| | | strftime('%Y-%W', datetime(:date/1000, 'unixepoch', 'localtime')) |
| | | ORDER BY createtime DESC |
| | | """) |
| | | fun getPackagesByWeek(date: Long): Flow<List<Code>> |
| | | |
| | | @Query(""" |
| | | SELECT category as courierName, COUNT(*) as count |
| | | SELECT type as courierName, COUNT(*) as count |
| | | FROM code |
| | | WHERE strftime('%Y-%W', substr(createtime, 1, 10)) = |
| | | strftime('%Y-%W', datetime(:date/1000, 'unixepoch', 'localtime')) |
| | | GROUP BY category |
| | | GROUP BY type |
| | | ORDER BY count DESC |
| | | """) |
| | | fun getCourierStatsByWeek(date: Long): Flow<List<CourierStat>> |
| | | |
| | | @Query(""" |
| | | SELECT substr(createtime, 1, 10) as date, |
| | | COUNT(*) as count |
| | | FROM code |
| | | WHERE strftime('%Y-%W', substr(createtime, 1, 10)) = |
| | | strftime('%Y-%W', datetime(:date/1000, 'unixepoch', 'localtime')) |
| | | GROUP BY substr(createtime, 1, 10) |
| | | WITH RECURSIVE weeks(week_start, week_end) AS ( |
| | | -- 从选定的日期开始计算周 |
| | | SELECT |
| | | date(datetime(:date/1000, 'unixepoch', 'localtime'), 'weekday 1', '-28 days') as week_start, |
| | | date(datetime(:date/1000, 'unixepoch', 'localtime'), 'weekday 0', '-28 days') as week_end |
| | | UNION ALL |
| | | SELECT |
| | | date(week_start, '+7 days'), |
| | | date(week_end, '+7 days') |
| | | FROM weeks |
| | | WHERE date(week_start) <= date(datetime(:date/1000, 'unixepoch', 'localtime')) |
| | | LIMIT 5 |
| | | ) |
| | | SELECT |
| | | CAST(strftime('%W', week_start) AS INTEGER) as date, |
| | | COUNT(code.id) as count, |
| | | week_start as week_start |
| | | FROM weeks |
| | | LEFT JOIN code ON datetime(code.createtime) BETWEEN datetime(weeks.week_start) |
| | | AND datetime(weeks.week_end, '+23 hours', '+59 minutes', '+59 seconds') |
| | | GROUP BY weeks.week_start |
| | | ORDER BY weeks.week_start ASC |
| | | """) |
| | | fun getDailyStatsByWeek(date: Long): Flow<List<DailyStat>> |
| | | |
| | | @Query(""" |
| | | SELECT * FROM code |
| | | WHERE substr(createtime, 1, 10) = |
| | | date(:date/1000, 'unixepoch', 'localtime') |
| | | ORDER BY createtime DESC |
| | | """) |
| | | fun getPackagesByWeek(date: Long): Flow<List<Code>> |
| | | } |