|
|
|
@ -7,7 +7,7 @@ use tdn_storage::local::{DStorage, DsValue};
@@ -7,7 +7,7 @@ use tdn_storage::local::{DStorage, DsValue};
|
|
|
|
|
/// Provider Model.
|
|
|
|
|
pub(crate) struct Provider { |
|
|
|
|
/// db auto-increment id.
|
|
|
|
|
id: i64, |
|
|
|
|
pub id: i64, |
|
|
|
|
/// name.
|
|
|
|
|
name: String, |
|
|
|
|
/// address.
|
|
|
|
@ -16,11 +16,25 @@ pub(crate) struct Provider {
@@ -16,11 +16,25 @@ pub(crate) struct Provider {
|
|
|
|
|
is_ok: bool, |
|
|
|
|
/// is default.
|
|
|
|
|
is_default: bool, |
|
|
|
|
/// support request proxy.
|
|
|
|
|
is_proxy: bool, |
|
|
|
|
/// is actived.
|
|
|
|
|
is_actived: bool, |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
impl Provider { |
|
|
|
|
pub fn prepare(addr: PeerAddr) -> Self { |
|
|
|
|
Self { |
|
|
|
|
id: 0, |
|
|
|
|
name: addr.to_hex(), |
|
|
|
|
addr: addr, |
|
|
|
|
is_ok: false, |
|
|
|
|
is_default: false, |
|
|
|
|
is_proxy: false, |
|
|
|
|
is_actived: false, |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
pub fn to_rpc(&self) -> RpcParam { |
|
|
|
|
json!([ |
|
|
|
|
self.id, |
|
|
|
@ -28,12 +42,15 @@ impl Provider {
@@ -28,12 +42,15 @@ impl Provider {
|
|
|
|
|
self.addr.to_hex(), |
|
|
|
|
self.is_ok, |
|
|
|
|
self.is_default, |
|
|
|
|
self.is_proxy, |
|
|
|
|
self.is_actived, |
|
|
|
|
]) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
fn from_values(mut v: Vec<DsValue>) -> Self { |
|
|
|
|
Self { |
|
|
|
|
is_actived: v.pop().unwrap().as_bool(), |
|
|
|
|
is_proxy: v.pop().unwrap().as_bool(), |
|
|
|
|
is_default: v.pop().unwrap().as_bool(), |
|
|
|
|
is_ok: v.pop().unwrap().as_bool(), |
|
|
|
|
addr: PeerAddr::from_hex(v.pop().unwrap().as_string()).unwrap_or(Default::default()), |
|
|
|
@ -44,8 +61,9 @@ impl Provider {
@@ -44,8 +61,9 @@ impl Provider {
|
|
|
|
|
|
|
|
|
|
/// use in rpc when load providers.
|
|
|
|
|
pub fn list(db: &DStorage) -> Result<Vec<Self>> { |
|
|
|
|
let matrix = |
|
|
|
|
db.query("SELECT id, name, addr, is_ok, is_default, is_actived FROM providers")?; |
|
|
|
|
let matrix = db.query( |
|
|
|
|
"SELECT id, name, addr, is_ok, is_default, is_proxy, is_actived FROM providers", |
|
|
|
|
)?; |
|
|
|
|
let mut providers = vec![]; |
|
|
|
|
for values in matrix { |
|
|
|
|
providers.push(Self::from_values(values)); |
|
|
|
@ -56,7 +74,7 @@ impl Provider {
@@ -56,7 +74,7 @@ impl Provider {
|
|
|
|
|
/// use in rpc when load provider by id.
|
|
|
|
|
pub fn get(db: &DStorage, id: &i64) -> Result<Self> { |
|
|
|
|
let sql = format!( |
|
|
|
|
"SELECT id, name, addr, is_ok, is_default, is_actived FROM providers WHERE id = {}", |
|
|
|
|
"SELECT id, name, addr, is_ok, is_default, is_proxy, is_actived FROM providers WHERE id = {}", |
|
|
|
|
id |
|
|
|
|
); |
|
|
|
|
let mut matrix = db.query(&sql)?; |
|
|
|
@ -70,7 +88,7 @@ impl Provider {
@@ -70,7 +88,7 @@ impl Provider {
|
|
|
|
|
/// insert a new provider.
|
|
|
|
|
pub fn get_by_addr(db: &DStorage, addr: &PeerAddr) -> Result<Self> { |
|
|
|
|
let sql = format!( |
|
|
|
|
"SELECT id, name, addr, is_ok, is_default, is_actived FROM providers WHERE addr = '{}'", |
|
|
|
|
"SELECT id, name, addr, is_ok, is_default, is_proxy, is_actived FROM providers WHERE addr = '{}'", |
|
|
|
|
addr.to_hex() |
|
|
|
|
); |
|
|
|
|
let mut matrix = db.query(&sql)?; |
|
|
|
@ -89,22 +107,24 @@ impl Provider {
@@ -89,22 +107,24 @@ impl Provider {
|
|
|
|
|
if unique_check.len() > 0 { |
|
|
|
|
let id = unique_check.pop().unwrap().pop().unwrap().as_i64(); |
|
|
|
|
self.id = id; |
|
|
|
|
let sql = format!("UPDATE providers SET name = '{}', addr = '{}', is_ok = {}, is_default = {}, is_actived = {} WHERE id = {}", |
|
|
|
|
let sql = format!("UPDATE providers SET name = '{}', addr = '{}', is_ok = {}, is_default = {}, is_proxy = {}, is_actived = {} WHERE id = {}", |
|
|
|
|
self.name, |
|
|
|
|
self.addr.to_hex(), |
|
|
|
|
self.is_ok, |
|
|
|
|
self.is_default, |
|
|
|
|
self.is_proxy, |
|
|
|
|
self.is_actived, |
|
|
|
|
self.id |
|
|
|
|
); |
|
|
|
|
db.update(&sql)?; |
|
|
|
|
} else { |
|
|
|
|
let sql = format!( |
|
|
|
|
"INSERT INTO providers (name, addr, is_ok, is_default, is_actived) VALUES ('{}', '{}', {}, {}, {})", |
|
|
|
|
"INSERT INTO providers (name, addr, is_ok, is_default, is_proxy, is_actived) VALUES ('{}', '{}', {}, {}, {}, {})", |
|
|
|
|
self.name, |
|
|
|
|
self.addr.to_hex(), |
|
|
|
|
self.is_ok, |
|
|
|
|
self.is_default, |
|
|
|
|
self.is_proxy, |
|
|
|
|
self.is_actived, |
|
|
|
|
); |
|
|
|
|
let id = db.insert(&sql)?; |
|
|
|
@ -113,6 +133,21 @@ impl Provider {
@@ -113,6 +133,21 @@ impl Provider {
|
|
|
|
|
Ok(()) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
pub fn ok(&mut self, db: &DStorage, name: String, is_proxy: bool) -> Result<()> { |
|
|
|
|
self.name = name; |
|
|
|
|
self.is_proxy = is_proxy; |
|
|
|
|
self.is_actived = true; |
|
|
|
|
self.is_ok = true; |
|
|
|
|
|
|
|
|
|
let sql = format!("UPDATE providers SET name = '{}', is_ok = true, is_proxy = {}, is_actived = true WHERE id = {}", |
|
|
|
|
self.name, |
|
|
|
|
self.is_proxy, |
|
|
|
|
self.id |
|
|
|
|
); |
|
|
|
|
db.update(&sql)?; |
|
|
|
|
Ok(()) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/// return if is closed
|
|
|
|
|
pub fn delete(db: &DStorage, id: &i64) -> Result<()> { |
|
|
|
|
let sql = format!("UPDATE providers SET is_actived = false WHERE id = {}", id); |
|
|
|
@ -184,11 +219,11 @@ impl Name {
@@ -184,11 +219,11 @@ impl Name {
|
|
|
|
|
Err(anyhow!("name is missing")) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/// insert a new provider.
|
|
|
|
|
pub fn get_by_addr(db: &DStorage, addr: &PeerAddr) -> Result<Self> { |
|
|
|
|
/// get name register.
|
|
|
|
|
pub fn get_by_name_provider(db: &DStorage, name: &str, provider: &i64) -> Result<Self> { |
|
|
|
|
let sql = format!( |
|
|
|
|
"SELECT id, name, addr, is_ok, is_default, is_actived FROM providers WHERE addr = '{}'", |
|
|
|
|
addr.to_hex() |
|
|
|
|
"SELECT id, provider, name, bio, is_ok, is_actived FROM names WHERE name = '{}' AND provider = {}", |
|
|
|
|
name, provider |
|
|
|
|
); |
|
|
|
|
let mut matrix = db.query(&sql)?; |
|
|
|
|
if matrix.len() > 0 { |
|
|
|
|