Refactoring to Rear #2
30
Cargo.lock
generated
30
Cargo.lock
generated
@ -1839,6 +1839,7 @@ dependencies = [
|
||||
"minijinja-autoreload",
|
||||
"once_cell",
|
||||
"pulldown-cmark",
|
||||
"rear",
|
||||
"rust-embed",
|
||||
"sea-orm",
|
||||
"serde",
|
||||
@ -2371,6 +2372,35 @@ dependencies = [
|
||||
"getrandom",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "rear"
|
||||
version = "0.1.0"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"async-trait",
|
||||
"axum 0.7.4",
|
||||
"barrel",
|
||||
"derive_builder",
|
||||
"dotenvy",
|
||||
"dunce",
|
||||
"env_logger",
|
||||
"log",
|
||||
"mime_guess",
|
||||
"minijinja",
|
||||
"minijinja-autoreload",
|
||||
"once_cell",
|
||||
"pulldown-cmark",
|
||||
"rust-embed",
|
||||
"sea-orm",
|
||||
"serde",
|
||||
"serde_json",
|
||||
"slug",
|
||||
"sqlformat",
|
||||
"tokio",
|
||||
"tower-http",
|
||||
"tracing",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "redox_syscall"
|
||||
version = "0.3.5"
|
||||
|
@ -9,7 +9,7 @@ default-run = "miniweb"
|
||||
|
||||
|
||||
[workspace]
|
||||
members = [".", "entity", "migration"]
|
||||
members = [".", "entity", "migration", "rear"]
|
||||
|
||||
[features]
|
||||
# https://github.com/rust-db/barrel/blob/master/guides/diesel-setup.md
|
||||
@ -19,6 +19,7 @@ default = ["use_barrel"]
|
||||
[dependencies]
|
||||
strinto = { path = "./strinto" }
|
||||
entity = { path = "./entity" }
|
||||
rear = { path = "./rear" }
|
||||
sea-orm = { version = "0.12.10", features = [
|
||||
"runtime-tokio-native-tls",
|
||||
"sqlx-postgres",
|
||||
|
15
NOTES.md
15
NOTES.md
@ -263,3 +263,18 @@ Make axum log requests!
|
||||
|
||||
There is another crate, that uses some MIME detection middleware for cache-control, called axum-cc, which could inspire middlewares here.
|
||||
|
||||
## Changing Rust Toolchain on Windows
|
||||
|
||||
change to GNU:
|
||||
|
||||
`rustup toolchain install stable-x86_64-pc-windows-gnu`
|
||||
|
||||
change back to MSVC:
|
||||
|
||||
`rustup toolchain install stable-x86_64-pc-windows-msvc`
|
||||
|
||||
or:
|
||||
|
||||
`rustup toolchain install stable-msvc`
|
||||
|
||||
activate toolchain with `rustup default`
|
||||
|
51
rear/Cargo.toml
Normal file
51
rear/Cargo.toml
Normal file
@ -0,0 +1,51 @@
|
||||
[package]
|
||||
name = "rear"
|
||||
version = "0.1.0"
|
||||
edition = "2021"
|
||||
publish = false
|
||||
|
||||
[lib]
|
||||
name = "rear"
|
||||
path = "src/lib.rs"
|
||||
|
||||
[features]
|
||||
# https://github.com/rust-db/barrel/blob/master/guides/diesel-setup.md
|
||||
use_barrel = ["barrel", "sqlformat"]
|
||||
default = ["use_barrel"]
|
||||
|
||||
[dependencies]
|
||||
sea-orm = { version = "0.12.10", features = [
|
||||
"runtime-tokio-native-tls",
|
||||
"sqlx-postgres",
|
||||
] }
|
||||
sqlformat = { version = "0.2.2", optional = true }
|
||||
anyhow = "1.0.75"
|
||||
axum = "0.7"
|
||||
barrel = { version = "0.7.0", optional = true, features = ["pg"] }
|
||||
dotenvy = "0.15.7"
|
||||
mime_guess = "2.0.4"
|
||||
minijinja = { version = "1.0.11", features = [
|
||||
"loader",
|
||||
"builtins",
|
||||
"urlencode",
|
||||
"deserialization",
|
||||
] }
|
||||
minijinja-autoreload = "1.0.8"
|
||||
once_cell = "1.18.0"
|
||||
pulldown-cmark = "0.9.3"
|
||||
rust-embed = { version = "8.0.0", features = [
|
||||
"axum",
|
||||
"tokio",
|
||||
"include-exclude",
|
||||
] }
|
||||
serde = { version = "1.0.188", features = ["derive"] }
|
||||
tokio = { version = "1.32.0", features = ["full"] }
|
||||
dunce = "1.0.4"
|
||||
log = "0.4.20"
|
||||
env_logger = "0.11"
|
||||
serde_json = "1.0.108"
|
||||
slug = "0.1.5"
|
||||
derive_builder = "0.13.0"
|
||||
async-trait = "0.1.77"
|
||||
tracing = "0.1.40"
|
||||
tower-http = { version = "0.5.1", features = ["trace"] }
|
@ -1,12 +1,10 @@
|
||||
use axum::{routing::get, routing::post, Router};
|
||||
|
||||
use crate::state::AppState;
|
||||
|
||||
pub mod domain;
|
||||
pub mod state;
|
||||
pub mod views;
|
||||
|
||||
pub fn routes() -> Router<AppState> {
|
||||
pub fn route() -> Router<AppState> {
|
||||
Router::new()
|
||||
.route("/", get(views::index).post(views::index_action))
|
||||
.route("/app/:app", get(views::list_app))
|
@ -1,10 +1,16 @@
|
||||
use tokio::sync::Mutex;
|
||||
|
||||
use super::domain::{AdminApp, AdminModel, AdminModelConfig, AdminRepository};
|
||||
use crate::service::templates::Templates;
|
||||
use std::collections::HashMap;
|
||||
use std::sync::Arc;
|
||||
|
||||
pub type AdminState = Arc<AdminRegistry>;
|
||||
pub trait AdminState {
|
||||
fn get_templates(&self) -> &Templates;
|
||||
fn get_registry(&self) -> SharedRegistry;
|
||||
}
|
||||
|
||||
pub type SharedRegistry = Arc<AdminRegistry>;
|
||||
|
||||
// main registry.
|
||||
pub struct AdminRegistry {
|
3
rear/src/lib.rs
Normal file
3
rear/src/lib.rs
Normal file
@ -0,0 +1,3 @@
|
||||
pub mod admin;
|
||||
pub mod auth;
|
||||
pub mod service;
|
@ -1,10 +1,7 @@
|
||||
mod admin;
|
||||
mod admin_examples;
|
||||
mod howto;
|
||||
mod service;
|
||||
mod state;
|
||||
|
||||
use crate::service::{handlers, templates};
|
||||
use crate::state::AppState;
|
||||
use admin_examples::static_repository;
|
||||
use admin_examples::user_repository;
|
||||
@ -19,6 +16,7 @@ use axum::{
|
||||
};
|
||||
use dotenvy::dotenv;
|
||||
use log::info;
|
||||
use rear::service::{handlers, templates};
|
||||
use std::env;
|
||||
use std::net::SocketAddr;
|
||||
use std::sync::Arc;
|
||||
|
@ -1,7 +1,7 @@
|
||||
use axum::extract::FromRef;
|
||||
|
||||
use crate::admin::state::AdminState;
|
||||
use crate::service::templates;
|
||||
use rear::admin::state::SharedRegistry;
|
||||
use rear::service::templates;
|
||||
|
||||
#[derive(Clone)]
|
||||
pub struct AppState {
|
||||
@ -15,8 +15,8 @@ impl FromRef<AppState> for templates::Templates {
|
||||
}
|
||||
}
|
||||
|
||||
impl FromRef<AppState> for AdminState {
|
||||
fn from_ref(app_state: &AppState) -> AdminState {
|
||||
impl FromRef<AppState> for SharedRegistry {
|
||||
fn from_ref(app_state: &AppState) -> SharedRegistry {
|
||||
app_state.admin.clone()
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user