smart-house-web: фронт эссперименты
This commit is contained in:
@@ -67,7 +67,7 @@ pub fn build_runtime() -> tokio::runtime::Runtime {
|
|||||||
}
|
}
|
||||||
|
|
||||||
mod server;
|
mod server;
|
||||||
pub use server::server_main;
|
pub use server::{axum_app, server_main};
|
||||||
|
|
||||||
mod house;
|
mod house;
|
||||||
pub use house::{Device, House, PowerSocket, Room, Thermometer};
|
pub use house::{Device, House, PowerSocket, Room, Thermometer};
|
||||||
|
|||||||
@@ -1,7 +1,8 @@
|
|||||||
use backend::{build_runtime, init_logger, server_main};
|
use backend::{axum_app, build_runtime, init_logger, server_main};
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
init_logger();
|
init_logger();
|
||||||
let runtime = build_runtime();
|
let runtime = build_runtime();
|
||||||
runtime.block_on(server_main());
|
let app = axum_app();
|
||||||
|
runtime.block_on(server_main(app));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,7 @@
|
|||||||
use axum::routing::{delete, get, post, put};
|
use axum::{
|
||||||
|
Router,
|
||||||
|
routing::{delete, get, post, put},
|
||||||
|
};
|
||||||
use std::{process::exit, sync::Arc};
|
use std::{process::exit, sync::Arc};
|
||||||
use tokio::sync::RwLock;
|
use tokio::sync::RwLock;
|
||||||
use tracing::{error, info};
|
use tracing::{error, info};
|
||||||
@@ -8,11 +11,9 @@ use crate::House;
|
|||||||
/// Тип состояния
|
/// Тип состояния
|
||||||
type ServerState = Arc<RwLock<House>>;
|
type ServerState = Arc<RwLock<House>>;
|
||||||
|
|
||||||
/// Основная функция сервера
|
pub fn axum_app() -> Router {
|
||||||
pub async fn server_main() {
|
|
||||||
let state: ServerState = Arc::new(RwLock::new(House::default()));
|
let state: ServerState = Arc::new(RwLock::new(House::default()));
|
||||||
|
axum::Router::new()
|
||||||
let app = axum::Router::new()
|
|
||||||
// Тестовый эндпоинт для экспериментов
|
// Тестовый эндпоинт для экспериментов
|
||||||
.route("/debug", get(debug::debug))
|
.route("/debug", get(debug::debug))
|
||||||
// API дома
|
// API дома
|
||||||
@@ -29,7 +30,11 @@ pub async fn server_main() {
|
|||||||
.route("/room/{name}/device/{name}", delete(device::delete_device))
|
.route("/room/{name}/device/{name}", delete(device::delete_device))
|
||||||
// Состояние и роут по-умолчанию
|
// Состояние и роут по-умолчанию
|
||||||
.with_state(state)
|
.with_state(state)
|
||||||
.fallback(fallback);
|
.fallback(fallback)
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Основная функция сервера
|
||||||
|
pub async fn server_main(app: Router) {
|
||||||
let addr = "127.0.0.1:8080";
|
let addr = "127.0.0.1:8080";
|
||||||
let listener = match tokio::net::TcpListener::bind(addr).await {
|
let listener = match tokio::net::TcpListener::bind(addr).await {
|
||||||
Ok(listener) => listener,
|
Ok(listener) => listener,
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
use std::collections::HashMap;
|
use std::collections::HashMap;
|
||||||
|
|
||||||
use backend::{Device, Room, init_logger, server_main};
|
use backend::{Device, Room, axum_app, init_logger, server_main};
|
||||||
use reqwest::{Client, Response, StatusCode};
|
use reqwest::{Client, Response, StatusCode};
|
||||||
use serde_json::json;
|
use serde_json::json;
|
||||||
use tokio::spawn;
|
use tokio::spawn;
|
||||||
@@ -11,7 +11,7 @@ type RqResult<T> = Result<T, reqwest::Error>;
|
|||||||
#[tokio::test(flavor = "current_thread")]
|
#[tokio::test(flavor = "current_thread")]
|
||||||
async fn smoke() -> RqResult<()> {
|
async fn smoke() -> RqResult<()> {
|
||||||
init_logger();
|
init_logger();
|
||||||
spawn(server_main());
|
spawn(server_main(axum_app()));
|
||||||
|
|
||||||
let client = Client::new();
|
let client = Client::new();
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user