Использование функции для осуществления операций в базе данных вместо ручного блокирования мьютекса.

This commit is contained in:
2025-04-15 13:08:46 +04:00
parent 5b6f5c830f
commit 057dac5b09
10 changed files with 138 additions and 130 deletions

View File

@@ -7,8 +7,7 @@ use diesel::{Connection, PgConnection};
use sha1::{Digest, Sha1};
use std::env;
use std::hash::Hash;
use std::ops::DerefMut;
use std::sync::{Mutex, MutexGuard};
use std::sync::Mutex;
#[derive(Clone)]
pub struct Schedule {
@@ -74,23 +73,6 @@ impl AppState {
}
}
impl AppState {
/// Получение объекта соединения с базой данных PostgreSQL
pub fn connection(&self) -> MutexGuard<PgConnection> {
self.database.lock().unwrap()
}
pub fn lock_connection<T, F>(&self, f: F) -> T
where
F: FnOnce(&mut PgConnection) -> T,
{
let mut lock = self.connection();
let conn = lock.deref_mut();
f(conn)
}
}
/// Создание нового объекта web::Data<AppState>
pub fn app_state() -> web::Data<AppState> {
web::Data::new(AppState::new())