astrox_macros 0.2.13

add user management and canister relation management for canister
Documentation
use ic_cdk::export::candid::{CandidType, Deserialize};
use ic_cdk::export::Principal;
use serde::Serialize;

#[derive(Clone, Debug, CandidType, Deserialize, Serialize)]
pub struct EgoError {
  pub code: u16,
  pub msg: String,
}

#[derive(CandidType, Deserialize, Serialize)]
pub enum QueryParam {
  ByCategory { category: Category },
}

#[derive(CandidType, Deserialize, Serialize)]
pub struct AppMainListRequest {
  pub query_param: QueryParam,
}

#[derive(CandidType, Deserialize, Serialize)]
pub struct AppMainListResponse {
  pub apps: Vec<App>,
}


#[derive(CandidType, Deserialize, Serialize)]
pub struct WalletAppListResponse {
  pub apps: Vec<UserApp>,
}

#[derive(CandidType, Deserialize, Serialize)]
pub struct WalletAppInstallRequest {
  pub app_id: AppId,
}


#[derive(CandidType, Deserialize, Serialize)]
pub struct WalletAppRemoveRequest {
  pub app_id: AppId,
}

#[derive(CandidType, Deserialize, Serialize)]
pub struct WalletOrderNewRequest {
  pub amount: f32,
}

#[derive(CandidType, Deserialize, Serialize)]
pub struct WalletOrderNewResponse {
  pub memo: Memo,
}

#[derive(CandidType, Serialize, Deserialize, Clone, Copy, Debug)]
pub struct Memo(pub u64);

pub type AppId = String;
pub type WasmId = String;
pub type FileId = String;

#[derive(CandidType, Serialize, Deserialize, Clone, Copy, Debug, Default, Ord, PartialOrd, Eq, PartialEq)]
pub struct Version {
  pub major: u32,
  pub minor: u32,
  pub patch: u32,
}

#[derive(Clone, Debug, CandidType, Deserialize, Serialize, PartialEq)]
pub enum Category {
  System,
  Vault,
}

#[derive(CandidType, Serialize, Deserialize, Clone, Debug)]
pub struct App {
  pub app_id: AppId,
  pub name: String,
  pub category: Category,
  pub logo: String,
  pub description: String,
  pub current_version: Version,
  pub price: f32,
}

#[derive(CandidType, Serialize, Deserialize, Clone, Debug, Eq, PartialEq)]
pub enum CanisterType {
  BACKEND,
  ASSET,
}

#[derive(CandidType, Serialize, Deserialize, Clone, Debug)]
pub struct WalletApp {
  pub app_id: AppId,
  pub current_version: Version,
  pub frontend: Option<Canister>,
  pub backend: Option<Canister>,
}


#[derive(CandidType, Serialize, Deserialize, Clone, Debug)]
pub struct Canister {
  pub canister_id: Principal,
  pub canister_type: CanisterType,
}

#[derive(CandidType, Serialize, Deserialize, Clone, Debug)]
pub struct UserApp {
  pub app_id: AppId,
  pub name: String,
  pub category: Category,
  pub logo: String,
  pub description: String,
  pub current_version: Version,
  pub frontend: Option<Canister>,
  pub backend: Option<Canister>,
  pub latest_version: Version,
}