Labrinth ID cleanup (#3681)

* Put all ID types in the labrinth::models::ids, and reduce code duplication with them

* Rewrite labrinth::database::models::ids and rename most DB interface ID structs to be prefixed with DB

* Run sqlx prepare

---------

Co-authored-by: Alejandro González <7822554+AlexTMjugador@users.noreply.github.com>
This commit is contained in:
Josiah Glosson
2025-05-22 03:34:36 -05:00
committed by GitHub
parent c6022ad977
commit 9e527ff141
111 changed files with 1477 additions and 1965 deletions

View File

@@ -1,5 +1,6 @@
//! Theseus state management system
use ariadne::users::{UserId, UserStatus};
use ariadne::ids::UserId;
use ariadne::users::UserStatus;
use chrono::{DateTime, Utc};
use dashmap::DashMap;
use serde::{Deserialize, Serialize};

View File

@@ -5,10 +5,11 @@ use crate::event::emit::emit_friend;
use crate::state::tunnel::InternalTunnelSocket;
use crate::state::{ProcessManager, Profile, TunnelSocket};
use crate::util::fetch::{FetchSemaphore, fetch_advanced, fetch_json};
use ariadne::ids::UserId;
use ariadne::networking::message::{
ClientToServerMessage, ServerToClientMessage,
};
use ariadne::users::{UserId, UserStatus};
use ariadne::users::UserStatus;
use async_tungstenite::WebSocketStream;
use async_tungstenite::tokio::{ConnectStream, connect_async};
use async_tungstenite::tungstenite::Message;

View File

@@ -1,4 +1,3 @@
pub use super::users::UserId;
use thiserror::Error;
/// Generates a random 64 bit integer that is exactly `n` characters
@@ -72,24 +71,7 @@ pub enum DecodingError {
}
#[macro_export]
macro_rules! from_base62id {
($($struct:ty, $con:expr;)+) => {
$(
impl From<Base62Id> for $struct {
fn from(id: Base62Id) -> $struct {
$con(id.0)
}
}
impl From<$struct> for Base62Id {
fn from(id: $struct) -> Base62Id {
Base62Id(id.0)
}
}
)+
};
}
#[macro_export]
#[doc(hidden)]
macro_rules! impl_base62_display {
($struct:ty) => {
impl std::fmt::Display for $struct {
@@ -102,15 +84,45 @@ macro_rules! impl_base62_display {
impl_base62_display!(Base62Id);
#[macro_export]
macro_rules! base62_id_impl {
($struct:ty, $cons:expr) => {
$crate::ids::from_base62id!($struct, $cons;);
$crate::ids::impl_base62_display!($struct);
}
}
base62_id_impl!(UserId, UserId);
macro_rules! base62_id {
($struct:ident) => {
$crate::ids::base62_id!($struct, "ariadne::ids::Base62Id");
};
pub use {base62_id_impl, from_base62id, impl_base62_display};
($struct:ident, $base_type:expr) => {
#[derive(
Copy,
Clone,
PartialEq,
Eq,
serde::Serialize,
serde::Deserialize,
Debug,
Hash,
)]
#[serde(from = $base_type)]
#[serde(into = $base_type)]
pub struct $struct(pub u64);
$crate::ids::impl_base62_display!($struct);
impl From<$crate::ids::Base62Id> for $struct {
fn from(id: $crate::ids::Base62Id) -> Self {
Self(id.0)
}
}
impl From<$struct> for $crate::ids::Base62Id {
fn from(id: $struct) -> Self {
Self(id.0)
}
}
};
}
base62_id!(UserId, "crate::ids::Base62Id");
pub use {base62_id, impl_base62_display};
pub mod base62_impl {
use serde::de::{self, Deserializer, Visitor};

View File

@@ -1,12 +1,7 @@
use super::ids::Base62Id;
use super::ids::UserId;
use chrono::{DateTime, Utc};
use serde::{Deserialize, Serialize};
#[derive(Copy, Clone, PartialEq, Eq, Serialize, Deserialize, Debug, Hash)]
#[serde(from = "Base62Id")]
#[serde(into = "Base62Id")]
pub struct UserId(pub u64);
#[derive(Debug, Serialize, Deserialize, Clone)]
pub struct UserStatus {
pub user_id: UserId,