mirror of
https://github.com/block/buzz.git
synced 2026-08-18 06:50:31 +02:00
+1








14fba21e57
Signed-off-by: tlongwell-block <109685178+tlongwell-block@users.noreply.github.com> Signed-off-by: npub1jh9wn95s0472h86ahapupaf7m6kx4v9sx2n0atj2hltcfer8k06s5n3pyf <95cae996907d7cab9f5dbf43c0f53edeac6ab0b032a6feae4abfd784e467b3f5@sprout-oss.stage.blox.sqprod.co> Signed-off-by: Tyler Longwell <tlongwell@block.xyz> Signed-off-by: npub1t2tgm7d8f995uqvmnm8h88sg3wnpp9a5xysjf6dg3tjmgt3ltulqdp8ehr <5a968df9a7494b4e019b9ecf739e088ba61097b4312124e9a88ae5b42e3f5f3e@sprout-oss.stage.blox.sqprod.co> Signed-off-by: npub17jjz49l9jjmhhk7cac63j8yt9z555n9cw8vk7v5jz4vzw4ppld5qgj57cc <f4a42a97e594b77bdbd8ee35191c8b28a94a4cb871d96f32921558275421fb68@sprout-oss.stage.blox.sqprod.co> Co-authored-by: Eva <011987e296fd5006292d2f930b574be47c7801048d1983c46c425d3c95f0cffd@sprout-oss.stage.blox.sqprod.co> Co-authored-by: Mari <95cae996907d7cab9f5dbf43c0f53edeac6ab0b032a6feae4abfd784e467b3f5@sprout-oss.stage.blox.sqprod.co> Co-authored-by: Sami <f4a42a97e594b77bdbd8ee35191c8b28a94a4cb871d96f32921558275421fb68@sprout-oss.stage.blox.sqprod.co> Co-authored-by: Max <d8473ee32b973aa31a21a65adddcc4b69cc2a8a4dee8121ecd51926e0cddbc02@sprout-oss.stage.blox.sqprod.co> Co-authored-by: Quinn <96f056ad5f2305c8ddf637dc65d048aa4c12d7daeb8867690e34fca46b0ef64c@sprout-oss.stage.blox.sqprod.co> Co-authored-by: Dawn <c6237ef84fa537c78dcee78efd2d4e59f728859c7f194da42ac51ededfa0be05@sprout-oss.stage.blox.sqprod.co> Co-authored-by: Tyler Longwell <tlongwell@block.xyz> Co-authored-by: Sami <sami@sprout-oss.stage.blox.sqprod.co> Co-authored-by: npub1t2tgm7d8f995uqvmnm8h88sg3wnpp9a5xysjf6dg3tjmgt3ltulqdp8ehr <5a968df9a7494b4e019b9ecf739e088ba61097b4312124e9a88ae5b42e3f5f3e@sprout-oss.stage.blox.sqprod.co>
38 lines
1.1 KiB
Rust
38 lines
1.1 KiB
Rust
//! Event publishing — PUBLISH to Redis via pool connection.
|
|
|
|
use buzz_core::TenantContext;
|
|
use deadpool_redis::Pool;
|
|
use nostr::JsonUtil;
|
|
use uuid::Uuid;
|
|
|
|
use crate::error::PubSubError;
|
|
use crate::topic::{self, EventTopic};
|
|
|
|
/// Returns the Redis pub/sub channel key for `channel_id` under `ctx`.
|
|
pub fn channel_key(ctx: &TenantContext, channel_id: Uuid) -> String {
|
|
topic::channel_key(ctx, channel_id)
|
|
}
|
|
|
|
/// Returns the Redis pub/sub channel key for community-global events under `ctx`.
|
|
pub fn global_key(ctx: &TenantContext) -> String {
|
|
topic::global_key(ctx)
|
|
}
|
|
|
|
/// Returns the number of subscribers that received the message.
|
|
pub async fn publish_event(
|
|
pool: &Pool,
|
|
ctx: &TenantContext,
|
|
topic: EventTopic,
|
|
event: &nostr::Event,
|
|
) -> Result<i64, PubSubError> {
|
|
let mut conn = pool.get().await?;
|
|
let key = crate::topic::EventTopicKey::from_context(ctx, topic).redis_channel();
|
|
let payload = event.as_json();
|
|
let subscriber_count: i64 = redis::cmd("PUBLISH")
|
|
.arg(&key)
|
|
.arg(&payload)
|
|
.query_async(&mut conn)
|
|
.await?;
|
|
Ok(subscriber_count)
|
|
}
|