spacetimedb/messages/
control_db.rs1use spacetimedb_datastore::system_tables::ModuleKind;
2use spacetimedb_lib::Identity;
3use spacetimedb_sats::de::Deserialize;
4use spacetimedb_sats::hash::Hash;
5use spacetimedb_sats::ser::Serialize;
6
7#[derive(Clone, PartialEq, Serialize, Deserialize)]
8pub struct IdentityEmail {
9 pub identity: Identity,
10 pub email: String,
11}
12#[derive(Clone, PartialEq, Serialize, Deserialize)]
14pub struct EnergyBalance {
15 pub identity: Identity,
16 pub balance: i128,
21}
22
23#[derive(Clone, PartialEq, Serialize, Deserialize)]
25pub struct Database {
26 pub id: u64,
28 pub database_identity: Identity,
30 pub owner_identity: Identity,
32 pub host_type: HostType,
36 pub initial_program: Hash,
40}
41
42#[derive(Clone, PartialEq, Serialize, Deserialize)]
43pub struct DatabaseStatus {
44 pub state: String,
45}
46#[derive(Clone, PartialEq, Serialize, Deserialize)]
47pub struct Replica {
48 pub id: u64,
49 pub database_id: u64,
50 pub node_id: u64,
51 pub leader: bool,
52}
53#[derive(Clone, PartialEq, Serialize, Deserialize)]
54pub struct ReplicaStatus {
55 pub state: String,
56}
57#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
58pub struct Node {
59 pub id: u64,
60 pub unschedulable: bool,
62 pub advertise_addr: Option<String>,
66}
67#[derive(Clone, PartialEq, Serialize, Deserialize)]
68pub struct NodeStatus {
69 pub state: String,
73}
74#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, Serialize, Deserialize)]
75#[repr(i32)]
76pub enum HostType {
77 Wasm = 0,
78 Js = 1,
79}
80
81impl From<crate::messages::control_db::HostType> for ModuleKind {
82 fn from(host_type: crate::messages::control_db::HostType) -> Self {
83 match host_type {
84 crate::messages::control_db::HostType::Wasm => Self::WASM,
85 crate::messages::control_db::HostType::Js => Self::JS,
86 }
87 }
88}