Files
portal/src/events/mod.rs
T

30 lines
850 B
Rust
Raw Normal View History

2026-08-12 22:55:36 +02:00
//! Plain NATS publish of every submission/decision - fire and forget,
//! no stream bookkeeping. The n8n automations subscribe to
//! `portal.answers.submitted` and gate on `question_id`/`alternative`.
#![cfg(feature = "ssr")]
pub mod store;
use serde::{Deserialize, Serialize};
#[derive(Clone, Debug, Serialize, Deserialize)]
pub struct AnswerSubmitted {
pub chain_hash: String,
pub parent_hashes: Vec<String>,
pub question_id: String,
pub alternative: String,
pub responses: serde_json::Value,
pub timestamp_ms: i64,
}
pub const ANSWERS_SUBJECT: &str = "portal.answers.submitted";
pub async fn emit_answer_submitted(
nats: &async_nats::Client,
payload: &AnswerSubmitted,
) -> anyhow::Result<()> {
let data = serde_json::to_vec(payload)?;
nats.publish(ANSWERS_SUBJECT, data.into()).await?;
Ok(())
}