Update visited date when event is fetched
This commit is contained in:
parent
9157308398
commit
aa3b323cb6
|
|
@ -135,11 +135,20 @@ impl Adaptor for DatastoreAdaptor {
|
|||
async fn get_event(&self, id: String) -> Result<Option<Event>, Self::Error> {
|
||||
let mut client = self.client.lock().await;
|
||||
|
||||
// TODO: mark as visited
|
||||
let key = Key::new(EVENT_KIND).id(id.clone());
|
||||
let existing_event = client.get::<Value, _>(key.clone()).await?;
|
||||
|
||||
Ok(client
|
||||
.get::<Value, _>(Key::new(EVENT_KIND).id(id.clone()))
|
||||
.await?
|
||||
// Mark as visited if it exists
|
||||
if let Some(mut event) = existing_event
|
||||
.clone()
|
||||
.map(HashMap::<String, Value>::from_value)
|
||||
.transpose()?
|
||||
{
|
||||
event.insert(String::from("visited"), Utc::now().timestamp().into_value());
|
||||
client.put((key, event)).await?;
|
||||
}
|
||||
|
||||
Ok(existing_event
|
||||
.map(|value| parse_into_event(id, value))
|
||||
.transpose()?)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -91,11 +91,16 @@ impl Adaptor for SqlAdaptor {
|
|||
}
|
||||
|
||||
async fn get_event(&self, id: String) -> Result<Option<Event>, Self::Error> {
|
||||
// TODO: mark as visited
|
||||
Ok(event::Entity::find_by_id(id)
|
||||
.one(&self.db)
|
||||
.await?
|
||||
.map(|model| model.into()))
|
||||
let existing_event = event::Entity::find_by_id(id).one(&self.db).await?;
|
||||
|
||||
// Mark as visited
|
||||
if let Some(event) = existing_event.clone() {
|
||||
let mut event: event::ActiveModel = event.into();
|
||||
event.visited_at = Set(Utc::now().naive_utc());
|
||||
event.save(&self.db).await?;
|
||||
}
|
||||
|
||||
Ok(existing_event.map(|model| model.into()))
|
||||
}
|
||||
|
||||
async fn create_event(&self, event: Event) -> Result<Event, Self::Error> {
|
||||
|
|
|
|||
|
|
@ -21,6 +21,7 @@ pub trait Adaptor: Send + Sync {
|
|||
async fn get_people(&self, event_id: String) -> Result<Option<Vec<Person>>, Self::Error>;
|
||||
async fn upsert_person(&self, event_id: String, person: Person) -> Result<Person, Self::Error>;
|
||||
|
||||
/// Get an event and update visited date to current time
|
||||
async fn get_event(&self, id: String) -> Result<Option<Event>, Self::Error>;
|
||||
async fn create_event(&self, event: Event) -> Result<Event, Self::Error>;
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue