So after testing this locally I found that this crashes the web server once you try to actually load one of the local crates:
thread '<unnamed>' panicked at 'error retrieving column 4: Error(Conversion(WasNull))', /root/.cargo/registry/src/github.com-1ecc6299db9ec823/postgres-0.15.2/src/rows.rs:201:31
stack backtrace:
0: backtrace::backtrace::libunwind::trace
at /cargo/registry/src/github.com-1ecc6299db9ec823/backtrace-0.3.34/src/backtrace/libunwind.rs:88
1: backtrace::backtrace::trace_unsynchronized
at /cargo/registry/src/github.com-1ecc6299db9ec823/backtrace-0.3.34/src/backtrace/mod.rs:66
2: std::sys_common::backtrace::_print
at src/libstd/sys_common/backtrace.rs:47
3: std::sys_common::backtrace::print
at src/libstd/sys_common/backtrace.rs:36
4: std::panicking::default_hook::{{closure}}
at src/libstd/panicking.rs:200
5: std::panicking::default_hook
at src/libstd/panicking.rs:214
6: std::panicking::rust_panic_with_hook
at src/libstd/panicking.rs:477
7: std::panicking::continue_panic_fmt
at src/libstd/panicking.rs:384
8: std::panicking::begin_panic_fmt
at src/libstd/panicking.rs:339
9: postgres::rows::Row::get
10: cratesfyi::web::releases::get_releases
11: <F as iron::middleware::Handler>::handle
12: <alloc::boxed::Box<dyn iron::middleware::Handler> as iron::middleware::Handler>::handle
13: router::router::Router::handle_method
14: <router::router::Router as iron::middleware::Handler>::handle
15: iron::middleware::Chain::continue_from_handler
16: <iron::middleware::Chain as iron::middleware::Handler>::handle
17: <alloc::boxed::Box<dyn iron::middleware::Handler> as iron::middleware::Handler>::handle
18: <cratesfyi::web::CratesfyiHandler as iron::middleware::Handler>::handle
19: <iron::iron::RawHandler<H> as hyper::server::Handler>::handle
20: hyper::server::Worker<H>::handle_connection
21: hyper::server::listener::spawn_with::{{closure}}
The root cause is that local packages were never released, so they don't have a release time. The fix is to make Release.release_time nullable.