removed some deps, using heap to store the current ringer (makes it more dynamic)
This commit is contained in:
31
src/main.rs
31
src/main.rs
@@ -1,7 +1,5 @@
|
||||
use std::sync::{Arc, Mutex};
|
||||
|
||||
use actix_web::{App, HttpServer, web::{self, resource}};
|
||||
use apistos::{SwaggerUIConfig, app::{BuildConfig, OpenApiWrapper}, info::Info, spec::Spec};
|
||||
use cron_tab::Cron;
|
||||
use gpio_cdev::Chip;
|
||||
use sea_orm::Database;
|
||||
@@ -10,7 +8,7 @@ use utoipa::OpenApi;
|
||||
use utoipa_axum::router::OpenApiRouter;
|
||||
use utoipa_swagger_ui::SwaggerUi;
|
||||
|
||||
use crate::{ringer::{BeepRinger, SilentRinger}, scheduler::Scheduler};
|
||||
use crate::{ringer::{BeepRinger, Ringer, SilentRinger}, scheduler::Scheduler};
|
||||
|
||||
mod scheduler;
|
||||
mod ringer;
|
||||
@@ -22,19 +20,34 @@ mod model;
|
||||
|
||||
#[derive(Clone)]
|
||||
struct AppState {
|
||||
scheduler: Arc<Scheduler<SilentRinger>>
|
||||
scheduler: Arc<Scheduler>
|
||||
}
|
||||
|
||||
fn construct_ringer() -> Arc<Mutex<dyn Ringer>> {
|
||||
let result = Chip::new("/dev/gpiochip0");
|
||||
|
||||
match result {
|
||||
Ok(chip) => {
|
||||
let chip = Arc::new(Mutex::new(chip));
|
||||
Arc::new(Mutex::new(BeepRinger::new(chip))) as Arc<Mutex<dyn Ringer>>
|
||||
},
|
||||
Err(e) => {
|
||||
println!("Error opening chip (falling back to silent ringer): {}", e);
|
||||
Arc::new(Mutex::new(SilentRinger::new())) as Arc<Mutex<dyn Ringer>>
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
async fn app_state() -> AppState {
|
||||
// let chip: Arc<Mutex<Chip>> = Arc::new(Mutex::new(Chip::new("/dev/gpiochip0").unwrap()));
|
||||
let cron = Arc::new(Mutex::new(Cron::new(chrono::Local)));
|
||||
let db = Database::connect("sqlite://snooze-pal.db").await.unwrap();
|
||||
let silent = Arc::new(Mutex::new(SilentRinger::new()));
|
||||
let ringer = construct_ringer();
|
||||
|
||||
AppState {
|
||||
scheduler: Arc::new(Scheduler::new(
|
||||
silent,
|
||||
cron.clone(),
|
||||
Arc::new(db)
|
||||
ringer,
|
||||
cron.clone(),
|
||||
Arc::new(db)
|
||||
))
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user