pub struct QueryGroup {Show 13 fields
pub id: QueryGroupId,
pub query_name: String,
pub args: Arc<Value>,
pub auth_scope: AuthScope,
pub auth_context: AuthContext,
pub table_deps: &'static [&'static str],
pub selected_cols: &'static [&'static str],
pub read_set: ReadSet,
pub last_result_hash: Option<String>,
pub last_result: Option<Arc<Value>>,
pub subscribers: Vec<SubscriberId>,
pub created_at: DateTime<Utc>,
pub execution_count: u64,
}Expand description
Coalesces subscriptions sharing the same query+args+auth_scope. On invalidation the query executes once per group, not per subscriber.
Fields§
§id: QueryGroupId§query_name: String§args: Arc<Value>§auth_scope: AuthScope§auth_context: AuthContextCached at subscribe time; not refreshed mid-lifetime. The reactor skips re-execution for groups with expired tokens; session cleanup evicts them.
table_deps: &'static [&'static str]§selected_cols: &'static [&'static str]§read_set: ReadSet§last_result_hash: Option<String>Shared across all subscribers for delta detection.
last_result: Option<Arc<Value>>Sent to new subscribers joining an existing group.
subscribers: Vec<SubscriberId>§created_at: DateTime<Utc>§execution_count: u64Implementations§
Source§impl QueryGroup
impl QueryGroup
Sourcepub fn compute_lookup_key(
query_name: &str,
args: &Value,
auth_scope: &AuthScope,
) -> SubscriptionKey
pub fn compute_lookup_key( query_name: &str, args: &Value, auth_scope: &AuthScope, ) -> SubscriptionKey
Compute the dedup key for (query_name, args, auth_scope).
Uses FNV-1a so the result is stable across process restarts — unlike
DefaultHasher which randomises its seed per process.
Sourcepub fn record_execution(&mut self, read_set: ReadSet, result_hash: String)
pub fn record_execution(&mut self, read_set: ReadSet, result_hash: String)
Record a query execution result.
Sourcepub fn record_execution_with_data(
&mut self,
read_set: ReadSet,
result_hash: String,
data: Arc<Value>,
)
pub fn record_execution_with_data( &mut self, read_set: ReadSet, result_hash: String, data: Arc<Value>, )
Record execution with the result data cached for new subscribers.
Sourcepub fn should_invalidate(&self, change: &Change) -> bool
pub fn should_invalidate(&self, change: &Change) -> bool
Check if a change should invalidate this group. Uses the runtime read set when populated, otherwise falls back to the compile-time table dependencies from macro extraction.
Auto Trait Implementations§
impl Freeze for QueryGroup
impl RefUnwindSafe for QueryGroup
impl Send for QueryGroup
impl Sync for QueryGroup
impl Unpin for QueryGroup
impl UnsafeUnpin for QueryGroup
impl UnwindSafe for QueryGroup
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more