uniquify events
This commit is contained in:
parent
5cd02e689d
commit
e7b024e843
12
src/main.rs
12
src/main.rs
|
@ -5,7 +5,7 @@ use std::mem::replace;
|
||||||
use std::io::Read;
|
use std::io::Read;
|
||||||
use std::fs::read_to_string;
|
use std::fs::read_to_string;
|
||||||
use std::sync::RwLock;
|
use std::sync::RwLock;
|
||||||
use std::collections::VecDeque;
|
use std::collections::{HashMap, VecDeque};
|
||||||
use chrono::offset::Utc;
|
use chrono::offset::Utc;
|
||||||
use reqwest::header::{IF_NONE_MATCH, IF_MODIFIED_SINCE, ETAG, LAST_MODIFIED, USER_AGENT};
|
use reqwest::header::{IF_NONE_MATCH, IF_MODIFIED_SINCE, ETAG, LAST_MODIFIED, USER_AGENT};
|
||||||
use diesel::{Connection, pg::PgConnection, prelude::*};
|
use diesel::{Connection, pg::PgConnection, prelude::*};
|
||||||
|
@ -146,7 +146,7 @@ impl Resources {
|
||||||
|
|
||||||
let mut p = Parser::new();
|
let mut p = Parser::new();
|
||||||
let mut buf = [0; 1024];
|
let mut buf = [0; 1024];
|
||||||
let mut events = vec![];
|
let mut events = HashMap::new();
|
||||||
loop {
|
loop {
|
||||||
match res.read(&mut buf)? {
|
match res.read(&mut buf)? {
|
||||||
len if len > 0 => {
|
len if len > 0 => {
|
||||||
|
@ -156,8 +156,8 @@ impl Resources {
|
||||||
extract_vevent_objs(&mut objs, obj);
|
extract_vevent_objs(&mut objs, obj);
|
||||||
for obj in objs {
|
for obj in objs {
|
||||||
let dbg = format!("{:?}", obj);
|
let dbg = format!("{:?}", obj);
|
||||||
if let Some(event) = obj_to_event(cal_opts.url.clone(), obj) {
|
if let Some(event) = obj_to_event(cal_opts.url.clone(), &obj) {
|
||||||
events.push(event);
|
events.insert(event.id.clone(), event);
|
||||||
} else {
|
} else {
|
||||||
println!("ignore {}", dbg);
|
println!("ignore {}", dbg);
|
||||||
}
|
}
|
||||||
|
@ -173,9 +173,9 @@ impl Resources {
|
||||||
diesel::delete(schema::events::dsl::events)
|
diesel::delete(schema::events::dsl::events)
|
||||||
.filter(schema::events::dsl::calendar.eq(cal_opts.url))
|
.filter(schema::events::dsl::calendar.eq(cal_opts.url))
|
||||||
.execute(&db)?;
|
.execute(&db)?;
|
||||||
for event in events {
|
for event in events.values() {
|
||||||
diesel::insert_into(schema::events::dsl::events)
|
diesel::insert_into(schema::events::dsl::events)
|
||||||
.values(&event)
|
.values(event)
|
||||||
.execute(&db)?;
|
.execute(&db)?;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue