mod_amqp/
lib.rs

1use config::{any_err, get_or_create_sub_module};
2use mlua::{Lua, LuaSerdeExt};
3
4mod amqprs_client;
5mod lapin_client;
6
7pub fn register(lua: &Lua) -> anyhow::Result<()> {
8    let amqp_mod = get_or_create_sub_module(lua, "amqp")?;
9
10    amqp_mod.set(
11        "build_client",
12        lua.create_async_function(|_, uri: String| async move {
13            lapin_client::build_client(uri).await.map_err(any_err)
14        })?,
15    )?;
16
17    amqp_mod.set(
18        "basic_publish",
19        lua.create_async_function(|lua, params: mlua::Value| async move {
20            let params: amqprs_client::PublishParams = lua.from_value(params)?;
21            amqprs_client::publish(params).await.map_err(any_err)
22        })?,
23    )?;
24
25    Ok(())
26}