ruwebframe 0.1.3

a simple webframe for rust actix-web, based on rudi and rbatis.
Documentation
use actix_web::guard::Guard;
use rudi::{Context, Singleton, Transient};
 
use serde::{Deserialize, Serialize};

// 注册一个名为 "prod" 的 String 单例
#[Singleton(name = "prod")]
fn prod_config() -> String {
    "production_url".to_string()
}

// 注册一个名为 "dev" 的 String 单例
#[Singleton(name = "dev")]
fn dev_config() -> String {
    "development_url".to_string()
}

#[Singleton]
fn provide_answeri232() -> i32 {
    0
}
#[Singleton]
fn provide_answerStr() -> String {
    String::from("")
}
#[Singleton]
fn provide_answeri64() -> i64 {
    0
}
#[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_001_di_single() {
    let mut cx = Context::auto_register();

    // 通过名称 "prod" 获取对应的 String 实例
    let prod_url: String = cx.resolve_with_name::<String>("prod");
    // 通过名称 "dev" 获取对应的 String 实例
    let dev_url: String = cx.resolve_with_name::<String>("dev");

    println!("Prod: {}, Dev: {}", prod_url, dev_url);
}

#[test]
fn test_002_di_single() {
    let mut cx = Context::auto_register();

    // 通过名称 "prod" 获取对应的 String 实例
    let u: User = cx.resolve::<User>();

    println!("Prod: {:?} ", u);
}

use ruwebframe::rubase::rutils::{fileutils, idseq};
use ruwebframe::rulog::rulog;

 
#[test]
fn test_005_di_single() {
    let mut cx = Context::auto_register();
   // let cx = AppContainer::new();
    let seq = cx.resolve::<idseq::IdSeq>();

    println!("Prod id: {} ", idseq::IdSeq::next_id());
    rulog::info(idseq::IdSeq::next_id().to_string().as_str());
    let mut u = cx.resolve::<pageresult::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 f() -> std::io::Result<()> {
    for f in list_files(".")? {
        println!("{}", f.display());
    }
    Ok(())
}

#[test]
fn test_006_di_single() {
    f();
}

use walkdir::WalkDir;
use ruwebframe::rupage::page::pageresult;

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_007_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_008_list_all_files() {
    for f in fileutils::list_all_files("./src") {
        println!("{}", f.display());
    }
}

#[test]
fn test_009_di_single() {
    // let c = AppContainer::new();
    // let mut u = c.find_bean::<pageresult::PageResult>();

    rulog::info(idseq::IdSeq::next_id().to_string().as_str());
    rulog::info(1.to_string().as_str());
}

#[test]
fn test_011_di_single() {
    let ret=fileutils::read_file("./commit.bat");
    rulog::info(ret.unwrap().as_str());
}
#[test]
fn test_012_di_single() {
    let ret=fileutils::read_file("./tests/ruconfig_test");
    rulog::info(ret.unwrap().as_str());
}