use actix_web::guard::Guard;
use rudi::{Context, Singleton, Transient};
use walkdir::WalkDir;
use ruwebframe::rupage::page::page_result;
use serde::{Deserialize, Serialize};
use ruwebframe::rubase::rutils::{file_utils, idseq};
use ruwebframe::rulog::ru_log;
#[Singleton(name = "prod")]
fn prod_config() -> String {
"production_url".to_string()
}
#[Singleton(name = "dev")]
fn dev_config() -> String {
"development_url".to_string()
}
#[Transient]
#[derive(Serialize, Deserialize, Debug, Clone)]
struct User {
id: i64,
name: String,
}
impl User {
pub fn new(id: i64, name: String) -> Self {
Self { id, name }
}
pub fn set_name(&mut self, name: String) {
self.name = name;
}
}
#[test]
fn test_01_di_single() {
let mut cx = Context::auto_register();
let prod_url: String = cx.resolve_with_name::<String>("prod");
let dev_url: String = cx.resolve_with_name::<String>("dev");
println!("Prod: {}, Dev: {}", prod_url, dev_url);
}
#[test]
fn test_02_di_single() {
let mut cx = Context::auto_register();
let u: User = cx.resolve::<User>();
println!("Prod: {:?} ", u);
}
#[test]
fn test_03_di_single() {
let mut cx = Context::auto_register();
let seq = cx.resolve::<idseq::IdSeq>();
println!("Prod id: {} ", idseq::IdSeq::next_id());
ru_log::info(idseq::IdSeq::next_id().to_string().as_str());
let mut u = cx.resolve::<page_result::PageResult>();
println!("Prod id: {} ", u );
}
use std::fs;
fn list_files(dir: &str) -> std::io::Result<Vec<std::path::PathBuf>> {
let mut files = Vec::new();
for entry in fs::read_dir(dir)? {
let entry = entry?;
let path = entry.path();
if path.is_file() {
files.push(path);
}
}
Ok(files)
}
fn list_all_files(dir: &str) -> Vec<std::path::PathBuf> {
WalkDir::new(dir)
.into_iter()
.filter_map(|e| e.ok())
.filter(|e| e.file_type().is_file())
.map(|e| e.path().to_path_buf())
.collect()
}
#[test]
fn test_04_list_all_files() {
for f in list_all_files("./src") {
if f.extension().and_then(|s| s.to_str()) == Some("rs") {
println!("{}", f.display());
}
}
}
#[test]
fn test_05_list_all_files() {
for f in file_utils::list_all_files("./src") {
println!("{}", f.display());
}
}
#[test]
fn test_06_di_single() {
ru_log::info(idseq::IdSeq::next_id().to_string().as_str());
ru_log::info(1.to_string().as_str());
}
#[test]
fn test_07_di_single() {
let ret= file_utils::read_file("./commit.bat");
ru_log::info(ret.unwrap().as_str());
}
#[test]
fn test_08_di_single() {
let ret= file_utils::read_file("./tests/ruconfig_test");
ru_log::info(ret.unwrap().as_str());
}