database: Store access times

This commit is contained in:
Elias Projahn 2022-04-10 13:43:31 +02:00
parent 5c64bdef7e
commit a0554a478f
20 changed files with 315 additions and 104 deletions

View file

@ -1,5 +1,6 @@
use super::schema::persons;
use super::{Database, Result};
use chrono::Utc;
use diesel::prelude::*;
use log::info;
@ -9,9 +10,21 @@ pub struct Person {
pub id: String,
pub first_name: String,
pub last_name: String,
pub last_used: Option<i64>,
pub last_played: Option<i64>,
}
impl Person {
pub fn new(id: String, first_name: String, last_name: String) -> Self {
Self {
id,
first_name,
last_name,
last_used: Some(Utc::now().timestamp()),
last_played: None,
}
}
/// Get the full name in the form "First Last".
pub fn name_fl(&self) -> String {
format!("{} {}", self.first_name, self.last_name)
@ -25,10 +38,12 @@ impl Person {
impl Database {
/// Update an existing person or insert a new one.
pub fn update_person(&self, person: Person) -> Result<()> {
pub fn update_person(&self, mut person: Person) -> Result<()> {
info!("Updating person {:?}", person);
self.defer_foreign_keys()?;
person.last_used = Some(Utc::now().timestamp());
self.connection.transaction(|| {
diesel::replace_into(persons::table)
.values(person)