ckb_app_config/configs/
rich_indexer.rs

1use serde::{Deserialize, Serialize};
2use std::{default::Default, path::PathBuf};
3
4const PGSQL: &str = "postgres://";
5const SQLITE: &str = "sqlite://";
6
7/// Rich indexer database type.
8#[derive(Clone, Debug, Serialize, Deserialize, Default, PartialEq, Eq, Copy)]
9#[serde(rename_all = "lowercase")]
10pub enum DBDriver {
11    /// Sqlite config options.
12    #[default]
13    Sqlite,
14    /// Postgres config options.
15    Postgres,
16}
17
18impl std::fmt::Display for DBDriver {
19    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
20        match self {
21            DBDriver::Postgres => write!(f, "{}", PGSQL),
22            DBDriver::Sqlite => write!(f, "{}", SQLITE),
23        }
24    }
25}
26
27/// Rich indexer config options.
28#[derive(Clone, Debug, Serialize, Deserialize)]
29pub struct RichIndexerConfig {
30    /// Rich indexer database type.
31    #[serde(default)]
32    pub db_type: DBDriver,
33    /// The index-r store path, default `data_dir / indexer / sqlite / sqlite.db`,
34    /// which will be realized through IndexerConfig::adjust.
35    #[serde(default)]
36    pub store: PathBuf,
37    /// The database name, default `ckb-rich-indexer`.
38    #[serde(default = "default_db_name")]
39    pub db_name: String,
40    /// The database host.
41    #[serde(default = "default_db_host")]
42    pub db_host: String,
43    /// The database port.
44    #[serde(default = "default_db_port")]
45    pub db_port: u16,
46    /// The database user.
47    #[serde(default = "default_db_user")]
48    pub db_user: String,
49    /// The database password.
50    #[serde(default = "default_db_password")]
51    pub db_password: String,
52}
53
54impl Default for RichIndexerConfig {
55    fn default() -> Self {
56        Self {
57            db_type: DBDriver::default(),
58            store: PathBuf::default(),
59            db_name: default_db_name(),
60            db_host: default_db_host(),
61            db_port: default_db_port(),
62            db_user: default_db_user(),
63            db_password: default_db_password(),
64        }
65    }
66}
67
68fn default_db_name() -> String {
69    "ckb-rich-indexer".to_string()
70}
71
72fn default_db_host() -> String {
73    "127.0.0.1".to_string()
74}
75
76fn default_db_port() -> u16 {
77    8532
78}
79
80fn default_db_user() -> String {
81    "postgres".to_string()
82}
83
84fn default_db_password() -> String {
85    "123456".to_string()
86}