bios-basic 0.2.0

An embeddable message queue system
Documentation
use std::sync::atomic::{AtomicUsize, Ordering};

use tardis::basic::dto::TardisContext;
use tardis::basic::field::TrimString;
use tardis::basic::result::TardisResult;
use tardis::log::info;
use tardis::TardisFuns;

use bios_basic::rbum::dto::rbum_set_dto::RbumSetAddReq;
use bios_basic::rbum::helper::rbum_event_helper;
use bios_basic::rbum::rbum_enumeration::RbumScopeLevelKind;
use bios_basic::rbum::serv::rbum_crud_serv::RbumCrudOperation;
use bios_basic::rbum::serv::rbum_set_serv::RbumSetServ;

static COUNTER: AtomicUsize = AtomicUsize::new(0);

pub async fn test() -> TardisResult<()> {
    let funs = TardisFuns::inst_with_db_conn("".to_string(), None);
    let ctx = TardisContext {
        own_paths: "".to_string(),
        owner: "".to_string(),
        ak: "".to_string(),
        roles: vec![],
        groups: vec![],
        ..Default::default()
    };
    info!("【test_rbum_event】 : receive events");
    rbum_event_helper::receive(
        |(_, msg)| async move {
            let message = rbum_event_helper::parse_message(msg)?;
            assert_eq!(message.table_name, "rbum_set");
            assert_eq!(message.operate, "c");
            COUNTER.fetch_add(1, Ordering::SeqCst);
            Ok(())
        },
        &funs,
    )
    .await?;

    RbumSetServ::add_rbum(
        &mut RbumSetAddReq {
            code: TrimString("test_rbum_set_code".to_string()),
            kind: TrimString("".to_string()),
            name: TrimString(" 测试集合 ".to_string()),
            note: None,
            icon: None,
            sort: None,
            scope_level: Some(RbumScopeLevelKind::L2),
            ext: None,
            disabled: None,
        },
        &funs,
        &ctx,
    )
    .await?;

    if let Some(notify_events) = rbum_event_helper::get_notify_event_with_ctx(&ctx).await? {
        rbum_event_helper::try_notifies(notify_events, &funs, &ctx).await?;
    }

    loop {
        if COUNTER.load(Ordering::SeqCst) > 0 {
            break;
        }
    }
    Ok(())
}