#![allow(dead_code)]
use anyhow::Result;
use rusqlite::{params, Connection};
pub fn get_last_pulled(conn: &Connection, table_name: &str) -> Result<Option<String>> {
let v: Option<String> = conn
.query_row(
"SELECT last_pulled_at FROM _sync_state WHERE table_name = ?1",
params![table_name],
|row| row.get(0),
)
.ok()
.flatten();
Ok(v)
}
pub fn set_last_pulled<C>(conn: &C, table_name: &str, when: &str) -> Result<()>
where
C: std::ops::Deref<Target = Connection>,
{
conn.execute(
r#"INSERT INTO _sync_state (table_name, last_pulled_at, updated_at)
VALUES (?1, ?2, ?3)
ON CONFLICT(table_name) DO UPDATE SET
last_pulled_at = excluded.last_pulled_at,
updated_at = excluded.updated_at"#,
params![table_name, when, chrono::Utc::now().to_rfc3339()],
)?;
Ok(())
}
pub fn get_last_pushed(conn: &Connection, table_name: &str) -> Result<Option<String>> {
let v: Option<String> = conn
.query_row(
"SELECT last_pushed_at FROM _sync_state WHERE table_name = ?1",
params![table_name],
|row| row.get(0),
)
.ok()
.flatten();
Ok(v)
}
pub fn set_last_pushed<C>(conn: &C, table_name: &str, when: &str) -> Result<()>
where
C: std::ops::Deref<Target = Connection>,
{
conn.execute(
r#"INSERT INTO _sync_state (table_name, last_pushed_at, updated_at)
VALUES (?1, ?2, ?3)
ON CONFLICT(table_name) DO UPDATE SET
last_pushed_at = excluded.last_pushed_at,
updated_at = excluded.updated_at"#,
params![table_name, when, chrono::Utc::now().to_rfc3339()],
)?;
Ok(())
}