1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
use serde::{Deserialize, Serialize};

use crate::errors::SummaServerResult;

#[derive(Clone, Debug, Serialize, Deserialize)]
pub struct Config {
    pub index_name: String,
    pub bootstrap_servers: Vec<String>,
    pub create_topics: bool,
    pub delete_topics: bool,
    pub group_id: String,
    pub max_poll_interval_ms: u32,
    pub session_timeout_ms: u32,
    pub topics: Vec<String>,
}

impl Config {
    pub fn new(index_name: &str, bootstrap_servers: &[String], group_id: &str, topics: &[String]) -> SummaServerResult<Config> {
        Ok(Config {
            index_name: index_name.to_string(),
            bootstrap_servers: bootstrap_servers.to_owned(),
            create_topics: true,
            delete_topics: true,
            group_id: group_id.to_owned(),
            max_poll_interval_ms: 1800000,
            session_timeout_ms: 300000,
            topics: topics.to_owned(),
        })
    }
}