e917a11d6c
* cargo upgrade --incompatible and update * first draft at suprisingly_large_refactor_to_get_ids_everywhere * put app in a task_local * ref cleanup * use a OnceLock instead of a tokio local * test more methods * APP isn't set in all tests * it compiles. tests fail. todos still open * use the app only when necessary * more tests. less panic * less verbose debug impl * short enum names * move kafka and secrets to their own files * main tests pass * add debug chain block time * helper for stats that ignores internal stats * Update Jenkinsfile (#223) * more tests --------- Co-authored-by: Pewxz <124064710+pewxz@users.noreply.github.com>
64 lines
1.4 KiB
Rust
64 lines
1.4 KiB
Rust
use serde::{Deserialize, Serialize};
|
|
use std::fmt;
|
|
use ulid::Ulid;
|
|
use uuid::Uuid;
|
|
|
|
/// This lets us use UUID and ULID while we transition to only ULIDs
|
|
/// TODO: custom deserialize that can also go from String to Ulid
|
|
#[derive(Copy, Clone, Deserialize)]
|
|
pub enum RpcSecretKey {
|
|
Ulid(Ulid),
|
|
Uuid(Uuid),
|
|
}
|
|
|
|
impl RpcSecretKey {
|
|
pub fn new() -> Self {
|
|
Ulid::new().into()
|
|
}
|
|
|
|
pub fn as_128(&self) -> u128 {
|
|
match self {
|
|
Self::Ulid(x) => x.0,
|
|
Self::Uuid(x) => x.as_u128(),
|
|
}
|
|
}
|
|
}
|
|
|
|
impl PartialEq for RpcSecretKey {
|
|
fn eq(&self, other: &Self) -> bool {
|
|
self.as_128() == other.as_128()
|
|
}
|
|
}
|
|
|
|
impl Eq for RpcSecretKey {}
|
|
|
|
impl fmt::Debug for RpcSecretKey {
|
|
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
|
|
match self {
|
|
Self::Ulid(x) => fmt::Debug::fmt(x, f),
|
|
Self::Uuid(x) => {
|
|
let x = Ulid::from(x.as_u128());
|
|
|
|
fmt::Debug::fmt(&x, f)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
/// always serialize as a ULID.
|
|
impl Serialize for RpcSecretKey {
|
|
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
|
|
where
|
|
S: serde::Serializer,
|
|
{
|
|
match self {
|
|
Self::Ulid(x) => x.serialize(serializer),
|
|
Self::Uuid(x) => {
|
|
let x: Ulid = x.to_owned().into();
|
|
|
|
x.serialize(serializer)
|
|
}
|
|
}
|
|
}
|
|
}
|