diff --git a/Cargo.lock b/Cargo.lock index 10a5e9f..95ac3e8 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1621,6 +1621,7 @@ dependencies = [ "rust-embed", "sea-orm", "serde", + "serde_json", "sqlformat", "tokio", ] @@ -2603,9 +2604,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.107" +version = "1.0.108" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b420ce6e3d8bd882e9b243c6eed35dbc9a6110c9769e74b584e0d68d1f20c65" +checksum = "3d1c7e3eac408d115102c4c24ad393e0821bb3a5df4d506a80f85f7a742a526b" dependencies = [ "itoa", "ryu", diff --git a/Cargo.toml b/Cargo.toml index a47e1cb..425beec 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -46,3 +46,4 @@ tokio = { version = "1.32.0", features = ["full"] } dunce = "1.0.4" log = "0.4.20" env_logger = "0.10.1" +serde_json = "1.0.108" diff --git a/src/admin/mod.rs b/src/admin/mod.rs index e025d5e..53018d6 100644 --- a/src/admin/mod.rs +++ b/src/admin/mod.rs @@ -10,4 +10,4 @@ pub mod views; pub fn routes() -> Router { Router::new().route("/", get(views::index).post(views::index_action)) } -*/ + */ diff --git a/src/admin/state.rs b/src/admin/state.rs index 7d79231..8e26e90 100644 --- a/src/admin/state.rs +++ b/src/admin/state.rs @@ -4,16 +4,27 @@ use axum::{async_trait, response::IntoResponse}; use axum::{routing::get, Router}; use core::future::Future; use std::collections::HashMap; + +use serde::Serialize; +use serde_json::Value; use std::sync::Arc; pub type AdminState = Arc; +#[derive(Serialize)] +pub enum RepositoryData {} + +pub trait AdminRepository: Send + Sync { + fn get_item(&self, id: usize) -> Option; + fn get_list(&self) -> Value; +} + // main registry. -#[derive(Clone)] pub struct AdminRegistry { base_path: String, apps: HashMap, models: HashMap, + repositories: HashMap>, } impl AdminRegistry { @@ -22,6 +33,7 @@ impl AdminRegistry { base_path: base_path.to_owned(), apps: HashMap::new(), models: HashMap::new(), + repositories: HashMap::new(), } }