fix: register vm node creates operator account in db
This commit is contained in:
parent
e025c26930
commit
faf262b9df
@ -30,6 +30,18 @@ impl Account {
|
||||
Ok(account)
|
||||
}
|
||||
|
||||
pub async fn get_or_create(db: &Surreal<Client>, address: &str) -> Result<Self, Error> {
|
||||
let id = (ACCOUNT, address);
|
||||
|
||||
match db.select(id).await? {
|
||||
Some(account) => Ok(account),
|
||||
None => {
|
||||
let account: Option<Self> = db.create(id).await?;
|
||||
account.ok_or(Error::FailedToCreateDBEntry)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
pub async fn airdrop(db: &Surreal<Client>, account: &str, tokens: u64) -> Result<(), Error> {
|
||||
let tokens = tokens.saturating_mul(1_000_000_000);
|
||||
let _ = db
|
||||
|
||||
@ -22,6 +22,8 @@ pub enum Error {
|
||||
StdIo(#[from] std::io::Error),
|
||||
#[error(transparent)]
|
||||
TimeOut(#[from] tokio::time::error::Elapsed),
|
||||
#[error("Failed to create account")]
|
||||
FailedToCreateDBEntry,
|
||||
}
|
||||
|
||||
pub mod prelude {
|
||||
|
||||
@ -3,6 +3,7 @@ use std::time::Duration;
|
||||
|
||||
use super::Error;
|
||||
use crate::constants::{ACCOUNT, ACTIVE_VM, DELETED_VM, NEW_VM_REQ, VM_NODE};
|
||||
use crate::db::general;
|
||||
use crate::db::general::Report;
|
||||
use crate::old_brain;
|
||||
use serde::{Deserialize, Serialize};
|
||||
@ -50,6 +51,7 @@ impl VmNodeResources {
|
||||
|
||||
impl VmNode {
|
||||
pub async fn register(self, db: &Surreal<Client>) -> Result<(), Error> {
|
||||
general::Account::get_or_create(db, &self.operator.key().to_string()).await?;
|
||||
let _: Option<VmNode> = db.upsert(self.id.clone()).content(self).await?;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user