fix: register vm node creates operator account in db
This commit is contained in:
parent
519bd1ed7b
commit
18c647ff3e
@ -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 {
|
||||
|
@ -5,7 +5,7 @@ use super::Error;
|
||||
use crate::constants::{
|
||||
ACCOUNT, ACTIVE_VM, DELETED_VM, NEW_VM_REQ, UPDATE_VM_REQ, VM_NODE, VM_UPDATE_EVENT,
|
||||
};
|
||||
use crate::db::{MeasurementArgs, Report, VmNodeFilters};
|
||||
use crate::db::{Account, MeasurementArgs, Report, VmNodeFilters};
|
||||
use crate::old_brain;
|
||||
use serde::{Deserialize, Serialize};
|
||||
use surrealdb::engine::remote::ws::Client;
|
||||
@ -52,6 +52,7 @@ impl VmNodeResources {
|
||||
|
||||
impl VmNode {
|
||||
pub async fn register(self, db: &Surreal<Client>) -> Result<(), Error> {
|
||||
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