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}