switched back to axum wip

This commit is contained in:
2026-03-02 17:03:22 +01:00
parent f7e55536ab
commit 05ba925d54
6 changed files with 240 additions and 68 deletions

View File

@@ -1,10 +1,14 @@
use std::sync::{Arc, Mutex};
use actix_web::{App, HttpServer, web};
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;
use tokio::net::TcpListener;
use utoipa::OpenApi;
use utoipa_axum::router::OpenApiRouter;
use utoipa_swagger_ui::SwaggerUi;
use crate::{ringer::BeepRinger, scheduler::Scheduler};
@@ -36,34 +40,29 @@ async fn app_state() -> AppState {
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let app_state = app_state().await;
// let app_state = app_state().await;
app_state.scheduler.start();
// app_state.scheduler.start();
let _ = start_actix_server(app_state).await;
start_axum_server().await;
Ok(())
}
#[derive(OpenApi)]
struct ApiDocs;
async fn start_actix_server(app_state: AppState) -> std::io::Result<()> {
let _ = HttpServer::new(move || {
let spec = Spec {
info: Info {
title: "Snooze Pal".to_string(),
version: "0.0.1".to_string(),
..Default::default()
},
..Default::default()
};
async fn start_axum_server() {
let docs = ApiDocs::openapi();
App::new()
.document(spec)
.service(resources::v1())
.app_data(web::Data::new(app_state.clone()))
.build_with("/openapi.json", BuildConfig::default().with(SwaggerUIConfig::new(&"/swagger")))
let (router, spec) = OpenApiRouter::with_openapi(docs)
.nest("/v1", resources::router())
.split_for_parts();
}).bind("0.0.0.0:8080")?.run().await;
let router = router.merge(SwaggerUi::new("/swagger-ui").url("/openapi.json", spec));
let listener = TcpListener::bind("0.0.0.0:8080")
.await.expect("Failed to bind to port 8080. It may be taken by another process.");
Ok(())
axum::serve(listener, router)
.await.expect("Failed to serve");
}