Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions server/src/cron/mod.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
pub mod remove_network_usage;
26 changes: 26 additions & 0 deletions server/src/cron/remove_network_usage.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
use std::format;
use std::thread;

use chrono;
use db::queries::network_usage::remove_older_logs;
use postgres;
use postgres::TlsMode;
use time;

pub fn run(db_user: &str, db_password: &str) {
let conn_uri = format!("postgres://{}:{}@localhost", db_user, db_password);
let conn = postgres::Connection::connect(conn_uri, TlsMode::None).unwrap();
let five_minutes = std::time::Duration::from_secs(5 * 60);

thread::Builder::new()
.name("cron-remove-network-usage".to_string())
.spawn(move || loop {
let current_date = chrono::Utc::now();
let one_week_ago = current_date - time::Duration::days(7);
if let Err(err) = remove_older_logs(&conn, one_week_ago) {
cwarn!("Fail remove_older_logs: {:?}", err)
}
thread::sleep(five_minutes);
})
.expect("Should success listening frontend");
}
2 changes: 1 addition & 1 deletion server/src/db/mod.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
pub mod event;
mod queries;
pub mod queries;
mod service;
mod types;

Expand Down
8 changes: 8 additions & 0 deletions server/src/db/queries/network_usage.rs
Original file line number Diff line number Diff line change
Expand Up @@ -58,3 +58,11 @@ fn parse_network_usage_key(key: &str) -> Result<(String, String), String> {

Ok((reg_result["extension"].to_string(), reg_result["ip"].to_string()))
}

pub fn remove_older_logs(conn: &postgres::Connection, time: chrono::DateTime<chrono::Utc>) -> postgres::Result<()> {
ctrace!("Remove network usage older than {}", time);

let result = conn.execute("DELETE FROM network_usage WHERE time<$1", &[&time])?;
ctrace!("Delete result {}", result);
Ok(())
}
4 changes: 4 additions & 0 deletions server/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -17,12 +17,14 @@ extern crate serde_derive;
#[macro_use]
extern crate serde_json;
extern crate slack_hook;
extern crate time;
extern crate ws;

#[macro_use]
mod logger;
mod client;
mod common_rpc_types;
mod cron;
mod daily_reporter;
mod db;
mod event_propagator;
Expand Down Expand Up @@ -110,6 +112,8 @@ fn main() {
})
.expect("Should success listening client");

cron::remove_network_usage::run(db_user, db_password);

let daily_reporter_join = daily_reporter::start(noti, db_service_sender, client_service_sender);

frontend_join.join().expect("Join frontend listener");
Expand Down