icydb_core/db/session/
mod.rs1mod accepted_schema;
7mod bounded_cache;
8mod catalog;
9mod integrity;
10mod mutation_job;
11mod query;
12mod read_set;
13mod request;
14mod response;
15mod resumable_job;
16#[cfg(feature = "sql")]
17mod sql;
18mod write;
19
20#[cfg(all(test, feature = "sql"))]
21mod tests;
22
23use crate::{
24 db::{Db, StoreRegistry},
25 traits::CanisterKind,
26};
27use std::thread::LocalKey;
28
29pub(in crate::db) use accepted_schema::AcceptedSchemaCatalogContext;
30#[cfg(feature = "sql")]
31pub(in crate::db) use query::QueryPlanCacheReuse;
32#[doc(hidden)]
33pub use query::{
34 MAX_TYPED_EXACT_KEY_BATCH_INPUT_BYTES, MAX_TYPED_EXACT_KEY_BATCH_ITEMS,
35 MAX_TYPED_EXACT_KEY_BATCH_RESULT_BYTES, MAX_TYPED_EXACT_KEY_BATCH_STORED_BYTES,
36};
37pub use request::RequestExecutionRoot;
38pub(in crate::db) use request::RequestExecutionScope;
39pub(in crate::db) use response::finalize_structural_grouped_projection_result;
40pub(in crate::db) use response::grouped_cursor_from_bytes;
41#[cfg(feature = "sql")]
42pub use sql::{
43 SqlConstraintValidationPage, SqlConstraintValidationRevisionStatus,
44 SqlConstraintValidationState, SqlDdlExecutionStatus, SqlDdlMutationKind,
45 SqlDdlPreparationReport, SqlIntegrityError, SqlStatementDispatch, SqlStatementResult,
46 SqlStatementShellSurface, SqlStatementSurface, sql_statement_dispatch,
47 sql_statement_shell_surface, sql_statement_surface,
48};
49#[cfg(feature = "sql")]
50pub(in crate::db::session) use write::{
51 AcceptedStructuralMutation, AcceptedStructuralMutationTarget,
52 structural_data_key_from_runtime_values,
53};
54
55pub struct DbSession<C: CanisterKind> {
62 db: Db<C>,
63}
64
65impl<C: CanisterKind> DbSession<C> {
66 #[must_use]
68 pub fn new(
69 store: &'static LocalKey<StoreRegistry>,
70 request_root: &RequestExecutionRoot,
71 ) -> Self {
72 Self {
73 db: Db::new(store, request_root.scope()),
74 }
75 }
76
77 pub(in crate::db) fn drive_startup_recovery_page_with_failure_authority(
79 &self,
80 ) -> Result<bool, crate::db::commit::StartupRecoveryFailure> {
81 self.db.drive_startup_recovery_page_with_failure_authority()
82 }
83
84 #[doc(hidden)]
89 #[must_use]
90 pub fn __new_from_current_request(store: &'static LocalKey<StoreRegistry>) -> Option<Self> {
91 request::current_request_scope().map(|scope| Self {
92 db: Db::new(store, scope),
93 })
94 }
95}