swiftide_integrations/fluvio/
mod.rs

1//! Fluvio is a real-time streaming data transformation platform.
2//!
3//! This module provides a Fluvio loader for Swiftide and allows you to ingest
4//! messages from Fluvio topics and use them for RAG.
5//!
6//! Can be configured with [`ConsumerConfigExt`].
7//!
8//! # Example
9//!
10//! ```no_run
11//! # use swiftide_integrations::fluvio::*;
12//! let loader = Fluvio::builder()
13//!     .consumer_config_ext(
14//!         ConsumerConfigExt::builder()
15//!             .topic("Hello Fluvio")
16//!             .partition(0)
17//!             .offset_start(fluvio::Offset::from_end(1))
18//!             .build().unwrap()
19//!     ).build().unwrap();
20//! ```
21
22use derive_builder::Builder;
23
24/// Re-export the fluvio config builder
25pub use fluvio::consumer::{ConsumerConfigExt, ConsumerConfigExtBuilder};
26use fluvio::FluvioConfig;
27
28mod loader;
29
30#[derive(Debug, Clone, Builder)]
31#[builder(setter(into, strip_option))]
32pub struct Fluvio {
33    /// The Fluvio consumer configuration to use.
34    consumer_config_ext: ConsumerConfigExt,
35
36    #[builder(default, setter(custom))]
37    /// Custom connection configuration
38    fluvio_config: Option<FluvioConfig>,
39}
40
41impl Fluvio {
42    /// Creates a new Fluvio instance from a consumer extended configuration
43    pub fn from_consumer_config(config: impl Into<ConsumerConfigExt>) -> Fluvio {
44        Fluvio {
45            consumer_config_ext: config.into(),
46            fluvio_config: None,
47        }
48    }
49
50    pub fn builder() -> FluvioBuilder {
51        FluvioBuilder::default()
52    }
53}
54
55impl FluvioBuilder {
56    pub fn fluvio_config(&mut self, config: &FluvioConfig) -> &mut Self {
57        self.fluvio_config = Some(Some(config.to_owned()));
58
59        self
60    }
61}