This commit is contained in:
Andras Schmelczer 2026-09-22 21:24:10 +01:00
commit 6ac27e3b34
5 changed files with 21 additions and 11 deletions

View file

@ -54,7 +54,7 @@ missing_debug_implementations = "warn"
[lints.clippy] [lints.clippy]
await_holding_lock = "warn" await_holding_lock = "warn"
dbg_macro = "warn" dbg_macro = "warn"
empty_enum = "warn" empty_enums = "warn"
enum_glob_use = "warn" enum_glob_use = "warn"
exit = "warn" exit = "warn"
filter_map_next = "warn" filter_map_next = "warn"

View file

@ -116,7 +116,12 @@ async fn migrations_can_be_reapplied_without_losing_requests_or_content() {
b"only copy" b"only copy"
); );
assert_eq!( assert_eq!(
reopened.events_after(&vault, 0, DEFAULT_EVENTS_PAGE_SIZE).await.unwrap().events.len(), reopened
.events_after(&vault, 0, DEFAULT_EVENTS_PAGE_SIZE)
.await
.unwrap()
.events
.len(),
1 1
); );
} }
@ -173,7 +178,10 @@ async fn replay_pages_are_bounded_and_cover_every_event_in_order() {
} }
let mut after = 0; let mut after = 0;
while after < 150 { while after < 150 {
let batch = database.events_after(&vault, after, DEFAULT_EVENTS_PAGE_SIZE).await.unwrap(); let batch = database
.events_after(&vault, after, DEFAULT_EVENTS_PAGE_SIZE)
.await
.unwrap();
assert!(batch.events.len() <= 64, "catchup must bound each page"); assert!(batch.events.len() <= 64, "catchup must bound each page");
assert!(!batch.events.is_empty()); assert!(!batch.events.is_empty());
assert_eq!(batch.head_event_id, 150); assert_eq!(batch.head_event_id, 150);
@ -242,7 +250,9 @@ async fn manifest_existence_checks_are_independent_of_payload_decoding() {
.await .await
.unwrap(); .unwrap();
assert_eq!( assert_eq!(
Database::get_missing_document(&mut tx, &[id]).await.unwrap(), Database::get_missing_document(&mut tx, &[id])
.await
.unwrap(),
None None
); );
let missing = uuid::Uuid::new_v4(); let missing = uuid::Uuid::new_v4();
@ -288,7 +298,10 @@ async fn replay_byte_budget_prevents_accumulating_large_historical_manifests() {
.unwrap(); .unwrap();
} }
tx.commit().await.unwrap(); tx.commit().await.unwrap();
let batch = database.events_after(&vault, 0, DEFAULT_EVENTS_PAGE_SIZE).await.unwrap(); let batch = database
.events_after(&vault, 0, DEFAULT_EVENTS_PAGE_SIZE)
.await
.unwrap();
assert!(!batch.events.is_empty()); assert!(!batch.events.is_empty());
assert!(batch.events.len() < 8); assert!(batch.events.len() < 8);
assert!(serde_json::to_vec(&batch).unwrap().len() < MAX_EVENTS_PAGE_BYTES + 1024); assert!(serde_json::to_vec(&batch).unwrap().len() < MAX_EVENTS_PAGE_BYTES + 1024);

View file

@ -1,9 +1,6 @@
use super::models::CursorPositionFromServer; use super::models::CursorPositionFromServer;
use crate::{ use crate::{
app_state::{ app_state::{database::models::VaultId, weak_slots::get_or_create},
database::models::VaultId,
weak_slots::get_or_create,
},
config::server_config::ServerConfig, config::server_config::ServerConfig,
}; };
use std::{collections::HashMap, sync::Arc}; use std::{collections::HashMap, sync::Arc};

View file

@ -3,13 +3,13 @@ use axum::extract::ws::{Message, WebSocket};
use futures::{sink::SinkExt, stream::SplitSink}; use futures::{sink::SinkExt, stream::SplitSink};
use super::models::{WebSocketClientMessage, WebSocketHandshake, WebSocketServerMessage}; use super::models::{WebSocketClientMessage, WebSocketHandshake, WebSocketServerMessage};
use crate::consts::WEBSOCKET_SEND_TIMEOUT;
use crate::{ use crate::{
app_state::{AppState, database::models::VaultId}, app_state::{AppState, database::models::VaultId},
config::user_config::User, config::user_config::User,
errors::{SyncServerError, server_error, unauthenticated_error}, errors::{SyncServerError, server_error, unauthenticated_error},
server::auth::auth, server::auth::auth,
}; };
use crate::consts::WEBSOCKET_SEND_TIMEOUT;
pub struct AuthenticatedWebSocketHandshake { pub struct AuthenticatedWebSocketHandshake {
pub handshake: WebSocketHandshake, pub handshake: WebSocketHandshake,

View file

@ -59,4 +59,4 @@ pub async fn history_middleware(
); );
} }
Ok(response) Ok(response)
} }