Detect duplicate accounts
This commit is contained in:
parent
19900dd8cf
commit
77579ebd45
|
@ -84,13 +84,18 @@ impl DbAdapter {
|
|||
sk: Option<&str>,
|
||||
ivk: &str,
|
||||
address: &str,
|
||||
) -> anyhow::Result<u32> {
|
||||
) -> anyhow::Result<i32> {
|
||||
let mut statement = self.connection.prepare("SELECT id_account FROM accounts WHERE ivk = ?1")?;
|
||||
if statement.exists(
|
||||
params![ivk])? {
|
||||
return Ok(-1)
|
||||
}
|
||||
self.connection.execute(
|
||||
"INSERT INTO accounts(name, seed, sk, ivk, address) VALUES (?1, ?2, ?3, ?4, ?5)
|
||||
ON CONFLICT DO NOTHING",
|
||||
params![name, seed, sk, ivk, address],
|
||||
)?;
|
||||
let id_tx: u32 = self.connection.query_row(
|
||||
let id_tx: i32 = self.connection.query_row(
|
||||
"SELECT id_account FROM accounts WHERE ivk = ?1",
|
||||
params![ivk],
|
||||
|row| row.get(0),
|
||||
|
|
|
@ -84,7 +84,7 @@ impl Wallet {
|
|||
recipient.is_some()
|
||||
}
|
||||
|
||||
pub fn new_account(&self, name: &str, data: &str) -> anyhow::Result<u32> {
|
||||
pub fn new_account(&self, name: &str, data: &str) -> anyhow::Result<i32> {
|
||||
if data.is_empty() {
|
||||
let mut entropy = [0u8; 32];
|
||||
OsRng.fill_bytes(&mut entropy);
|
||||
|
@ -107,12 +107,14 @@ impl Wallet {
|
|||
Ok(ivk)
|
||||
}
|
||||
|
||||
pub fn new_account_with_key(&self, name: &str, key: &str) -> anyhow::Result<u32> {
|
||||
pub fn new_account_with_key(&self, name: &str, key: &str) -> anyhow::Result<i32> {
|
||||
let (seed, sk, ivk, pa) = decode_key(key)?;
|
||||
let account = self
|
||||
.db
|
||||
.store_account(name, seed.as_deref(), sk.as_deref(), &ivk, &pa)?;
|
||||
self.db.create_taddr(account)?;
|
||||
if account > 0 {
|
||||
self.db.create_taddr(account as u32)?;
|
||||
}
|
||||
Ok(account)
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue