neo/src/models/sessions.rs
2022-04-24 22:05:39 +02:00

42 lines
876 B
Rust

use sqlx::SqlitePool;
use super::devices::Device;
pub struct Session {
id: i64,
device_id: i64,
value: String,
}
impl Session {
pub async fn create(conn: &SqlitePool, device: &Device, value: &str) -> anyhow::Result<Self> {
let device_id = device.id();
Ok(sqlx::query_as!(
Self,
"insert into sessions(device_id, value) values(?, ?) returning id, device_id, value",
device_id,
value
)
.fetch_one(conn)
.await?)
}
/// Get the session's id.
#[must_use]
pub fn id(&self) -> i64 {
self.id
}
/// Get the session's device id.
#[must_use]
pub fn device_id(&self) -> i64 {
self.device_id
}
/// Get a reference to the session's value.
#[must_use]
pub fn value(&self) -> &str {
self.value.as_ref()
}
}