aboutsummaryrefslogtreecommitdiffstats
path: root/ui/backend/src/db.rs
diff options
context:
space:
mode:
Diffstat (limited to 'ui/backend/src/db.rs')
-rw-r--r--ui/backend/src/db.rs18
1 files changed, 18 insertions, 0 deletions
diff --git a/ui/backend/src/db.rs b/ui/backend/src/db.rs
index 7e29302a..1015ebf1 100644
--- a/ui/backend/src/db.rs
+++ b/ui/backend/src/db.rs
@@ -174,6 +174,24 @@ impl HistoryDB {
Ok(history)
}
+ pub async fn calendar(&self) -> Result<Vec<(String, u64)>, String> {
+ let query = "select count(1) as count, strftime('%F', datetime(timestamp / 1000000000, 'unixepoch')) as day from history where timestamp > ((unixepoch() - 31536000) * 1000000000) group by day;";
+
+ let calendar: Vec<(String, u64)> = sqlx::query(query)
+ // safe to cast, count(x) is never < 0
+ .map(|row: SqliteRow| {
+ (
+ row.get::<String, _>("day"),
+ row.get::<i64, _>("count") as u64,
+ )
+ })
+ .fetch_all(&self.0.pool)
+ .await
+ .map_err(|e| e.to_string())?;
+
+ Ok(calendar)
+ }
+
pub async fn global_stats(&self) -> Result<GlobalStats, String> {
let day_ago = time::OffsetDateTime::now_utc() - time::Duration::days(1);
let day_ago = day_ago.unix_timestamp_nanos();