diff --git a/Cargo.lock b/Cargo.lock index 7246dad..a294108 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1706,6 +1706,7 @@ dependencies = [ name = "ticker-serve" version = "0.1.0" dependencies = [ + "chrono 0.4.9 (registry+https://github.com/rust-lang/crates.io-index)", "diesel 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)", "libticker 0.1.0", "rocket 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", diff --git a/schema.sql b/schema.sql index a8d4a74..3292419 100644 --- a/schema.sql +++ b/schema.sql @@ -22,3 +22,4 @@ CREATE TABLE events ( location TEXT, url TEXT ); +CREATE index events_dtstart_dtend ON events (dtstart, dtend); diff --git a/ticker-serve/Cargo.toml b/ticker-serve/Cargo.toml index c74086d..6ec0e35 100644 --- a/ticker-serve/Cargo.toml +++ b/ticker-serve/Cargo.toml @@ -8,4 +8,5 @@ edition = "2018" rocket = "0.4" typed-html = "0.2" diesel = { version = "~1", features = ["postgres", "chrono"] } +chrono = "~0.4" libticker = { path = "../libticker" } diff --git a/ticker-serve/src/main.rs b/ticker-serve/src/main.rs index 3dfb1ca..97dbd68 100644 --- a/ticker-serve/src/main.rs +++ b/ticker-serve/src/main.rs @@ -7,6 +7,7 @@ use std::sync::Mutex; use rocket::{State, response::content}; use typed_html::{html, text, dom::DOMTree}; use diesel::{Connection, pg::PgConnection, prelude::*}; +use chrono::offset::Local; use libticker::{ config::{Config, CalendarOptions}, @@ -26,7 +27,9 @@ fn fix_url(s: &str) -> std::borrow::Cow { #[get("/")] fn index(db: State>) -> content::Html { let db = db.lock().unwrap(); + let today = Local::today().naive_local().and_hms(0, 0, 0); let es = events + .filter(schema::events::dtstart.ge(&today)) .order_by(schema::events::dtstart.asc()) .then_order_by(schema::events::dtend.desc()) .load::(&*db)