use displaydoc::Display;
use postgres::Client;
use serde::{Deserialize, Serialize};
use tokio_postgres::NoTls;
use crate::rubase::rutils::strutils;
use crate::rubase::ruentity;
struct Database {
name: String,
}
#[derive(Debug, Clone, Default, Deserialize, Serialize)]
pub struct Gorm {
pub debug: String,
pub dbType: String,
pub enable: String, pub maxIdletime: i32, pub maxLifetime: i32, pub maxOpenConns: i32, pub maxIdleConns: i32, }
impl ruentity::BaseEntity for Gorm {
}
impl Gorm {
pub fn new() -> Gorm {
Self {
debug: "false".to_string(),
dbType: "mysql".to_string(),
enable: "true".to_string(),
maxIdletime: 900,
maxLifetime: 7200,
maxOpenConns: 150,
maxIdleConns: 50,
}
}
pub fn parse_env_var(&mut self) {
self.debug= strutils::parse_env_var(std::mem::take(&mut self.debug));
self.dbType= strutils::parse_env_var(std::mem::take(&mut self.dbType));
self.enable= strutils::parse_env_var(std::mem::take(&mut self.enable));
}
}
#[derive(Debug, Clone, Display,Default, Deserialize, Serialize)]
pub struct DataSource {
dbtype: String,
dbname: String,
host: String,
port: String, username: String, password: String, sslmode: String, charset: String,
}
impl ruentity::BaseEntity for DataSource {
}
impl DataSource {
pub fn new() -> DataSource {
Self {
..Default::default()
}
}
pub fn buildUrl(&self) -> std::string::String {
format!(
"host={} port={} user={} dbname={} password={}",
self.host, self.port, self.username, self.dbname, self.password
) }
pub fn parse_env_var(&mut self) {
self.dbtype= strutils::parse_env_var(std::mem::take(&mut self.dbtype));
self.dbname= strutils::parse_env_var(std::mem::take(&mut self.dbname));
self.host= strutils::parse_env_var(std::mem::take(&mut self.host));
self.port= strutils::parse_env_var(std::mem::take(&mut self.port));
self.username= strutils::parse_env_var(std::mem::take(&mut self.username));
self.password= strutils::parse_env_var(std::mem::take(&mut self.password));
self.sslmode= strutils::parse_env_var(std::mem::take(&mut self.sslmode));
self.charset= strutils::parse_env_var(std::mem::take(&mut self.charset));
}
}