Private
Public Access
1
0

refactor: with_repository/with_settings

This commit is contained in:
2025-04-25 16:34:00 -07:00
parent 89c9ffc187
commit b1f171136a
5 changed files with 249 additions and 227 deletions

View File

@@ -1,7 +1,7 @@
use diesel::*;
use serde::{Serialize, de::DeserializeOwned};
use anyhow::Result;
use crate::database::Database;
#[derive(Insertable, Queryable, AsChangeset)]
#[diesel(table_name = crate::schema::settings)]
struct SettingsRow<'a> {
@@ -10,12 +10,12 @@ struct SettingsRow<'a> {
}
pub struct Settings<'a> {
db: &'a mut Database,
connection: &'a mut SqliteConnection,
}
impl<'a> Settings<'a> {
pub fn new(db: &'a mut Database) -> Self {
Self { db }
pub fn new(connection: &'a mut SqliteConnection) -> Self {
Self { connection }
}
pub fn put<T: Serialize>(
@@ -31,7 +31,7 @@ impl<'a> Settings<'a> {
.on_conflict(key)
.do_update()
.set(value.eq(&bytes))
.execute(&mut self.db.connection)?;
.execute(self.connection)?;
Ok(())
}
@@ -44,7 +44,7 @@ impl<'a> Settings<'a> {
let blob: Option<Vec<u8>> = settings
.select(value)
.filter(key.eq(k))
.first(&mut self.db.connection)
.first(self.connection)
.optional()?;
Ok(match blob {
@@ -55,14 +55,14 @@ impl<'a> Settings<'a> {
pub fn del(&mut self, k: &str) -> Result<usize> {
use crate::schema::settings::dsl::*;
Ok(diesel::delete(settings.filter(key.eq(k))).execute(&mut self.db.connection)?)
Ok(diesel::delete(settings.filter(key.eq(k))).execute(self.connection)?)
}
pub fn list_keys(&mut self) -> Result<Vec<String>> {
use crate::schema::settings::dsl::*;
let keys: Vec<String> = settings
.select(key)
.load(&mut self.db.connection)?;
.load(self.connection)?;
Ok(keys)
}