@lix-js/sdk 0.6.0-preview.3 → 0.6.0-preview.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/SKILL.md +105 -65
- package/dist/engine-wasm/index.js +4 -4
- package/dist/engine-wasm/wasm/lix_engine.d.ts +30 -6
- package/dist/engine-wasm/wasm/lix_engine.js +187 -117
- package/dist/engine-wasm/wasm/lix_engine.wasm +0 -0
- package/dist/engine-wasm/wasm/lix_engine.wasm.d.ts +14 -8
- package/dist/generated/builtin-schemas.d.ts +69 -69
- package/dist/generated/builtin-schemas.js +94 -94
- package/dist/open-lix.d.ts +42 -28
- package/dist/open-lix.js +49 -10
- package/dist/sqlite/index.js +86 -30
- package/dist-engine-src/README.md +3 -3
- package/dist-engine-src/src/backend/capabilities.rs +67 -0
- package/dist-engine-src/src/backend/conformance/baseline.rs +1127 -0
- package/dist-engine-src/src/backend/conformance/factory.rs +93 -0
- package/dist-engine-src/src/backend/conformance/failure_tests.rs +608 -0
- package/dist-engine-src/src/backend/conformance/fixtures.rs +26 -0
- package/dist-engine-src/src/backend/conformance/mod.rs +75 -0
- package/dist-engine-src/src/backend/conformance/model.rs +28 -0
- package/dist-engine-src/src/backend/conformance/model_based.rs +257 -0
- package/dist-engine-src/src/backend/conformance/persistence.rs +204 -0
- package/dist-engine-src/src/backend/conformance/projection.rs +21 -0
- package/dist-engine-src/src/backend/conformance/pushdown.rs +24 -0
- package/dist-engine-src/src/backend/conformance/runner.rs +90 -0
- package/dist-engine-src/src/backend/conformance/scan.rs +24 -0
- package/dist-engine-src/src/backend/conformance/write.rs +16 -0
- package/dist-engine-src/src/backend/error.rs +94 -0
- package/dist-engine-src/src/backend/in_memory.rs +670 -0
- package/dist-engine-src/src/backend/mod.rs +36 -9
- package/dist-engine-src/src/backend/predicate.rs +80 -0
- package/dist-engine-src/src/backend/traits.rs +260 -0
- package/dist-engine-src/src/backend/types.rs +224 -81
- package/dist-engine-src/src/binary_cas/context.rs +8 -8
- package/dist-engine-src/src/binary_cas/kv.rs +234 -259
- package/dist-engine-src/src/{version → branch}/context.rs +12 -12
- package/dist-engine-src/src/branch/lifecycle.rs +221 -0
- package/dist-engine-src/src/branch/mod.rs +13 -0
- package/dist-engine-src/src/branch/refs.rs +321 -0
- package/dist-engine-src/src/branch/stage_rows.rs +67 -0
- package/dist-engine-src/src/branch/types.rs +21 -0
- package/dist-engine-src/src/catalog/context.rs +18 -18
- package/dist-engine-src/src/catalog/snapshot.rs +8 -8
- package/dist-engine-src/src/changelog/bench_support.rs +785 -0
- package/dist-engine-src/src/changelog/change.rs +1 -0
- package/dist-engine-src/src/changelog/codec.rs +497 -0
- package/dist-engine-src/src/changelog/commit.rs +1 -0
- package/dist-engine-src/src/changelog/context.rs +1614 -0
- package/dist-engine-src/src/changelog/mod.rs +29 -0
- package/dist-engine-src/src/changelog/store.rs +163 -0
- package/dist-engine-src/src/changelog/test_support.rs +54 -0
- package/dist-engine-src/src/changelog/types.rs +213 -0
- package/dist-engine-src/src/commit_graph/context.rs +317 -274
- package/dist-engine-src/src/commit_graph/mod.rs +2 -4
- package/dist-engine-src/src/commit_graph/types.rs +22 -42
- package/dist-engine-src/src/commit_graph/walker.rs +133 -103
- package/dist-engine-src/src/common/error.rs +52 -18
- package/dist-engine-src/src/common/identity.rs +2 -2
- package/dist-engine-src/src/common/mod.rs +1 -1
- package/dist-engine-src/src/domain.rs +42 -46
- package/dist-engine-src/src/engine.rs +74 -96
- package/dist-engine-src/src/{entity_identity.rs → entity_pk.rs} +89 -92
- package/dist-engine-src/src/functions/context.rs +56 -52
- package/dist-engine-src/src/functions/state.rs +51 -52
- package/dist-engine-src/src/init.rs +288 -154
- package/dist-engine-src/src/json_store/context.rs +15 -266
- package/dist-engine-src/src/json_store/mod.rs +26 -0
- package/dist-engine-src/src/json_store/store.rs +103 -718
- package/dist-engine-src/src/json_store/types.rs +4 -9
- package/dist-engine-src/src/lib.rs +49 -19
- package/dist-engine-src/src/live_state/context.rs +654 -790
- package/dist-engine-src/src/live_state/mod.rs +9 -3
- package/dist-engine-src/src/live_state/overlay.rs +4 -4
- package/dist-engine-src/src/live_state/types.rs +30 -21
- package/dist-engine-src/src/live_state/visibility.rs +514 -71
- package/dist-engine-src/src/plugin/install.rs +48 -48
- package/dist-engine-src/src/plugin/manifest.rs +7 -7
- package/dist-engine-src/src/plugin/materializer.rs +0 -275
- package/dist-engine-src/src/plugin/plugin_manifest.json +4 -3
- package/dist-engine-src/src/schema/builtin/lix_binary_blob_ref.json +2 -2
- package/dist-engine-src/src/schema/builtin/lix_branch_descriptor.json +34 -0
- package/dist-engine-src/src/schema/builtin/lix_branch_ref.json +48 -0
- package/dist-engine-src/src/schema/builtin/lix_change.json +3 -3
- package/dist-engine-src/src/schema/builtin/lix_commit.json +1 -1
- package/dist-engine-src/src/schema/builtin/lix_label_assignment.json +6 -6
- package/dist-engine-src/src/schema/builtin/mod.rs +18 -20
- package/dist-engine-src/src/schema/compatibility.rs +11 -11
- package/dist-engine-src/src/schema/definition.json +2 -2
- package/dist-engine-src/src/schema/definition.rs +5 -5
- package/dist-engine-src/src/schema/key.rs +3 -3
- package/dist-engine-src/src/schema/mod.rs +1 -1
- package/dist-engine-src/src/schema/tests.rs +18 -18
- package/dist-engine-src/src/session/context.rs +819 -124
- package/dist-engine-src/src/session/create_branch.rs +94 -0
- package/dist-engine-src/src/session/execute.rs +260 -57
- package/dist-engine-src/src/session/merge/analysis.rs +9 -3
- package/dist-engine-src/src/session/merge/{version.rs → branch.rs} +119 -129
- package/dist-engine-src/src/session/merge/conflicts.rs +2 -2
- package/dist-engine-src/src/session/merge/mod.rs +5 -6
- package/dist-engine-src/src/session/merge/stats.rs +7 -11
- package/dist-engine-src/src/session/mod.rs +19 -16
- package/dist-engine-src/src/session/switch_branch.rs +113 -0
- package/dist-engine-src/src/session/transaction.rs +557 -0
- package/dist-engine-src/src/sql2/bind/classify.rs +102 -0
- package/dist-engine-src/src/sql2/bind/error.rs +5 -0
- package/dist-engine-src/src/sql2/bind/expr.rs +29 -0
- package/dist-engine-src/src/sql2/bind/mod.rs +12 -0
- package/dist-engine-src/src/sql2/{udfs/public_call.rs → bind/public_udf.rs} +98 -3
- package/dist-engine-src/src/sql2/bind/read.rs +65 -0
- package/dist-engine-src/src/sql2/bind/statement.rs +2236 -0
- package/dist-engine-src/src/sql2/bind/table.rs +273 -0
- package/dist-engine-src/src/sql2/bind/write.rs +86 -0
- package/dist-engine-src/src/sql2/branch_scope.rs +436 -0
- package/dist-engine-src/src/sql2/catalog/capability.rs +20 -0
- package/dist-engine-src/src/sql2/catalog/entity_surface.rs +296 -0
- package/dist-engine-src/src/sql2/catalog/mod.rs +15 -0
- package/dist-engine-src/src/sql2/catalog/registry.rs +556 -0
- package/dist-engine-src/src/sql2/catalog/schema.rs +88 -0
- package/dist-engine-src/src/sql2/catalog/surface.rs +41 -0
- package/dist-engine-src/src/sql2/change_materialization.rs +122 -0
- package/dist-engine-src/src/sql2/context.rs +36 -30
- package/dist-engine-src/src/sql2/error.rs +4 -5
- package/dist-engine-src/src/sql2/exec/bound_public_write.rs +1593 -0
- package/dist-engine-src/src/sql2/exec/datafusion.rs +5266 -0
- package/dist-engine-src/src/sql2/exec/fast_write.rs +82 -0
- package/dist-engine-src/src/sql2/exec/mod.rs +24 -0
- package/dist-engine-src/src/sql2/exec/write.rs +661 -0
- package/dist-engine-src/src/sql2/filesystem_planner.rs +72 -77
- package/dist-engine-src/src/sql2/filesystem_visibility.rs +21 -21
- package/dist-engine-src/src/sql2/history_projection.rs +8 -8
- package/dist-engine-src/src/sql2/history_route.rs +35 -31
- package/dist-engine-src/src/sql2/mod.rs +30 -24
- package/dist-engine-src/src/sql2/optimize/datafusion.rs +1 -0
- package/dist-engine-src/src/sql2/optimize/mod.rs +2 -0
- package/dist-engine-src/src/sql2/optimize/simple_write.rs +116 -0
- package/dist-engine-src/src/sql2/parse/mod.rs +69 -0
- package/dist-engine-src/src/sql2/parse/normalize.rs +1 -0
- package/dist-engine-src/src/sql2/plan/branch_scope.rs +24 -0
- package/dist-engine-src/src/sql2/plan/mod.rs +5 -0
- package/dist-engine-src/src/sql2/plan/predicate.rs +22 -0
- package/dist-engine-src/src/sql2/plan/write.rs +147 -0
- package/dist-engine-src/src/sql2/predicate_typecheck.rs +258 -0
- package/dist-engine-src/src/sql2/{version_provider.rs → providers/branch.rs} +218 -214
- package/dist-engine-src/src/sql2/{change_provider.rs → providers/change.rs} +156 -42
- package/dist-engine-src/src/sql2/{directory_provider.rs → providers/directory.rs} +291 -322
- package/dist-engine-src/src/sql2/{directory_history_provider.rs → providers/directory_history.rs} +56 -42
- package/dist-engine-src/src/sql2/providers/entity.rs +1484 -0
- package/dist-engine-src/src/sql2/{entity_history_provider.rs → providers/entity_history.rs} +43 -31
- package/dist-engine-src/src/sql2/{file_provider.rs → providers/file.rs} +323 -316
- package/dist-engine-src/src/sql2/{file_history_provider.rs → providers/file_history.rs} +60 -46
- package/dist-engine-src/src/sql2/{history_provider.rs → providers/history.rs} +46 -32
- package/dist-engine-src/src/sql2/{lix_state_provider.rs → providers/lix_state.rs} +359 -329
- package/dist-engine-src/src/sql2/providers/mod.rs +508 -0
- package/dist-engine-src/src/sql2/read_only.rs +2 -2
- package/dist-engine-src/src/sql2/session.rs +47 -96
- package/dist-engine-src/src/sql2/storage/constraints.rs +1 -0
- package/dist-engine-src/src/sql2/storage/mod.rs +1 -0
- package/dist-engine-src/src/sql2/test_support/differential.rs +712 -0
- package/dist-engine-src/src/sql2/test_support/generators.rs +354 -0
- package/dist-engine-src/src/sql2/test_support/mod.rs +2 -0
- package/dist-engine-src/src/sql2/udfs/{lix_active_version_commit_id.rs → lix_active_branch_commit_id.rs} +7 -7
- package/dist-engine-src/src/sql2/udfs/mod.rs +3 -6
- package/dist-engine-src/src/sql2/write_normalization.rs +45 -22
- package/dist-engine-src/src/storage/conformance.rs +399 -0
- package/dist-engine-src/src/storage/context.rs +552 -288
- package/dist-engine-src/src/storage/mod.rs +48 -10
- package/dist-engine-src/src/storage/point.rs +440 -0
- package/dist-engine-src/src/storage/read_scope.rs +43 -64
- package/dist-engine-src/src/storage/reader.rs +867 -0
- package/dist-engine-src/src/storage/scan.rs +784 -0
- package/dist-engine-src/src/storage/spaces.rs +236 -0
- package/dist-engine-src/src/storage/stats.rs +80 -0
- package/dist-engine-src/src/storage/write_set.rs +962 -0
- package/dist-engine-src/src/storage_bench.rs +136 -4828
- package/dist-engine-src/src/test_support.rs +360 -138
- package/dist-engine-src/src/tracked_state/bench_support.rs +394 -0
- package/dist-engine-src/src/tracked_state/codec.rs +155 -1057
- package/dist-engine-src/src/tracked_state/commit_root_rebuild.rs +358 -0
- package/dist-engine-src/src/tracked_state/context.rs +1927 -993
- package/dist-engine-src/src/tracked_state/diff.rs +1715 -261
- package/dist-engine-src/src/tracked_state/merge.rs +74 -88
- package/dist-engine-src/src/tracked_state/mod.rs +19 -16
- package/dist-engine-src/src/tracked_state/{materialization.rs → row_materialization.rs} +50 -178
- package/dist-engine-src/src/tracked_state/storage.rs +243 -191
- package/dist-engine-src/src/tracked_state/tree.rs +247 -371
- package/dist-engine-src/src/tracked_state/types.rs +49 -42
- package/dist-engine-src/src/transaction/bench_support.rs +407 -0
- package/dist-engine-src/src/transaction/commit.rs +821 -713
- package/dist-engine-src/src/transaction/context.rs +705 -600
- package/dist-engine-src/src/transaction/mod.rs +13 -2
- package/dist-engine-src/src/transaction/normalization.rs +63 -76
- package/dist-engine-src/src/transaction/prep.rs +13 -13
- package/dist-engine-src/src/transaction/schema_resolver.rs +19 -5
- package/dist-engine-src/src/transaction/staging.rs +228 -434
- package/dist-engine-src/src/transaction/types.rs +41 -98
- package/dist-engine-src/src/transaction/validation.rs +382 -446
- package/dist-engine-src/src/untracked_state/codec.rs +337 -29
- package/dist-engine-src/src/untracked_state/context.rs +7 -7
- package/dist-engine-src/src/untracked_state/materialization.rs +2 -2
- package/dist-engine-src/src/untracked_state/mod.rs +1 -1
- package/dist-engine-src/src/untracked_state/storage.rs +659 -157
- package/dist-engine-src/src/untracked_state/types.rs +21 -21
- package/package.json +71 -68
- package/dist-engine-src/src/backend/kv.rs +0 -358
- package/dist-engine-src/src/backend/testing.rs +0 -658
- package/dist-engine-src/src/commit_store/codec.rs +0 -887
- package/dist-engine-src/src/commit_store/context.rs +0 -944
- package/dist-engine-src/src/commit_store/materialization.rs +0 -84
- package/dist-engine-src/src/commit_store/mod.rs +0 -16
- package/dist-engine-src/src/commit_store/storage.rs +0 -600
- package/dist-engine-src/src/commit_store/types.rs +0 -215
- package/dist-engine-src/src/schema/builtin/lix_version_descriptor.json +0 -34
- package/dist-engine-src/src/schema/builtin/lix_version_ref.json +0 -48
- package/dist-engine-src/src/session/create_version.rs +0 -88
- package/dist-engine-src/src/session/merge/apply.rs +0 -23
- package/dist-engine-src/src/session/optimization9_sql2_bench.rs +0 -100
- package/dist-engine-src/src/session/switch_version.rs +0 -109
- package/dist-engine-src/src/sql2/classify.rs +0 -182
- package/dist-engine-src/src/sql2/entity_provider.rs +0 -3211
- package/dist-engine-src/src/sql2/execute.rs +0 -3440
- package/dist-engine-src/src/sql2/public_bind/assignment.rs +0 -46
- package/dist-engine-src/src/sql2/public_bind/capability.rs +0 -41
- package/dist-engine-src/src/sql2/public_bind/dml.rs +0 -166
- package/dist-engine-src/src/sql2/public_bind/mod.rs +0 -25
- package/dist-engine-src/src/sql2/public_bind/table.rs +0 -168
- package/dist-engine-src/src/sql2/version_scope.rs +0 -394
- package/dist-engine-src/src/storage/types.rs +0 -501
- package/dist-engine-src/src/tracked_state/by_file_index.rs +0 -98
- package/dist-engine-src/src/tracked_state/materializer.rs +0 -488
- package/dist-engine-src/src/transaction/live_state_overlay.rs +0 -35
- package/dist-engine-src/src/version/lifecycle.rs +0 -221
- package/dist-engine-src/src/version/mod.rs +0 -13
- package/dist-engine-src/src/version/refs.rs +0 -330
- package/dist-engine-src/src/version/stage_rows.rs +0 -67
- package/dist-engine-src/src/version/types.rs +0 -21
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
use serde_json::Value as JsonValue;
|
|
2
2
|
use std::sync::Arc;
|
|
3
3
|
|
|
4
|
-
use crate::
|
|
4
|
+
use crate::entity_pk::EntityPk;
|
|
5
5
|
use crate::functions::{DeterministicMode, DeterministicSequence};
|
|
6
6
|
use crate::json_store::NormalizedJson;
|
|
7
7
|
use crate::live_state::{LiveStateReader, LiveStateRowRequest, MaterializedLiveStateRow};
|
|
8
8
|
use crate::storage::StorageWriteSet;
|
|
9
9
|
use crate::untracked_state::UntrackedStateContext;
|
|
10
10
|
use crate::untracked_state::UntrackedStateRow;
|
|
11
|
-
use crate::
|
|
11
|
+
use crate::GLOBAL_BRANCH_ID;
|
|
12
12
|
use crate::{LixError, NullableKeyFilter};
|
|
13
13
|
|
|
14
14
|
pub(crate) const DETERMINISTIC_MODE_KEY: &str = "lix_deterministic_mode";
|
|
@@ -78,8 +78,8 @@ async fn load_key_value_row(
|
|
|
78
78
|
live_state
|
|
79
79
|
.load_row(&LiveStateRowRequest {
|
|
80
80
|
schema_key: KEY_VALUE_SCHEMA_KEY.to_string(),
|
|
81
|
-
|
|
82
|
-
|
|
81
|
+
branch_id: GLOBAL_BRANCH_ID.to_string(),
|
|
82
|
+
entity_pk: EntityPk::single(key),
|
|
83
83
|
file_id: NullableKeyFilter::Null,
|
|
84
84
|
})
|
|
85
85
|
.await
|
|
@@ -154,7 +154,7 @@ fn deterministic_key_value_row(
|
|
|
154
154
|
timestamp: &str,
|
|
155
155
|
) -> Result<UntrackedStateRow, LixError> {
|
|
156
156
|
Ok(UntrackedStateRow {
|
|
157
|
-
|
|
157
|
+
entity_pk: crate::entity_pk::EntityPk::single(key),
|
|
158
158
|
schema_key: KEY_VALUE_SCHEMA_KEY.to_string(),
|
|
159
159
|
file_id: None,
|
|
160
160
|
snapshot_content: Some(snapshot_content.to_string()),
|
|
@@ -162,17 +162,15 @@ fn deterministic_key_value_row(
|
|
|
162
162
|
created_at: timestamp.to_string(),
|
|
163
163
|
updated_at: timestamp.to_string(),
|
|
164
164
|
global: true,
|
|
165
|
-
|
|
165
|
+
branch_id: GLOBAL_BRANCH_ID.to_string(),
|
|
166
166
|
})
|
|
167
167
|
}
|
|
168
168
|
|
|
169
169
|
#[cfg(test)]
|
|
170
170
|
mod tests {
|
|
171
|
-
use std::sync::Arc;
|
|
172
|
-
|
|
173
|
-
use crate::backend::testing::UnitTestBackend;
|
|
174
171
|
use crate::live_state::{LiveStateContext, LiveStateRowRequest};
|
|
175
172
|
use crate::storage::StorageContext;
|
|
173
|
+
use crate::storage::{InMemoryStorageBackend, StorageReadOptions, StorageWriteOptions};
|
|
176
174
|
|
|
177
175
|
use super::*;
|
|
178
176
|
|
|
@@ -186,10 +184,13 @@ mod tests {
|
|
|
186
184
|
|
|
187
185
|
#[tokio::test]
|
|
188
186
|
async fn missing_mode_is_disabled() {
|
|
189
|
-
let
|
|
190
|
-
let storage = StorageContext::new(backend.clone());
|
|
187
|
+
let storage = StorageContext::new(InMemoryStorageBackend::new());
|
|
191
188
|
let live_state = live_state_context();
|
|
192
|
-
let reader = live_state.reader(
|
|
189
|
+
let reader = live_state.reader(
|
|
190
|
+
storage
|
|
191
|
+
.begin_read(StorageReadOptions::default())
|
|
192
|
+
.expect("read should open"),
|
|
193
|
+
);
|
|
193
194
|
|
|
194
195
|
let mode = load_mode(&reader)
|
|
195
196
|
.await
|
|
@@ -200,10 +201,9 @@ mod tests {
|
|
|
200
201
|
|
|
201
202
|
#[tokio::test]
|
|
202
203
|
async fn valid_mode_decodes_flags() {
|
|
203
|
-
let
|
|
204
|
-
let storage = StorageContext::new(backend.clone());
|
|
204
|
+
let storage = StorageContext::new(InMemoryStorageBackend::new());
|
|
205
205
|
let live_state = live_state_context();
|
|
206
|
-
crate::test_support::
|
|
206
|
+
crate::test_support::seed_global_branch_head(storage.clone()).await;
|
|
207
207
|
write_test_key_value(
|
|
208
208
|
storage.clone(),
|
|
209
209
|
DETERMINISTIC_MODE_KEY,
|
|
@@ -214,7 +214,11 @@ mod tests {
|
|
|
214
214
|
)
|
|
215
215
|
.await;
|
|
216
216
|
|
|
217
|
-
let reader = live_state.reader(
|
|
217
|
+
let reader = live_state.reader(
|
|
218
|
+
storage
|
|
219
|
+
.begin_read(StorageReadOptions::default())
|
|
220
|
+
.expect("read should open"),
|
|
221
|
+
);
|
|
218
222
|
let mode = load_mode(&reader).await.expect("valid mode should decode");
|
|
219
223
|
|
|
220
224
|
assert_eq!(
|
|
@@ -228,10 +232,13 @@ mod tests {
|
|
|
228
232
|
|
|
229
233
|
#[tokio::test]
|
|
230
234
|
async fn missing_sequence_is_uninitialized() {
|
|
231
|
-
let
|
|
232
|
-
let storage = StorageContext::new(backend.clone());
|
|
235
|
+
let storage = StorageContext::new(InMemoryStorageBackend::new());
|
|
233
236
|
let live_state = live_state_context();
|
|
234
|
-
let reader = live_state.reader(
|
|
237
|
+
let reader = live_state.reader(
|
|
238
|
+
storage
|
|
239
|
+
.begin_read(StorageReadOptions::default())
|
|
240
|
+
.expect("read should open"),
|
|
241
|
+
);
|
|
235
242
|
|
|
236
243
|
let sequence = load_sequence(&reader)
|
|
237
244
|
.await
|
|
@@ -242,10 +249,9 @@ mod tests {
|
|
|
242
249
|
|
|
243
250
|
#[tokio::test]
|
|
244
251
|
async fn valid_sequence_decodes_highest_seen() {
|
|
245
|
-
let
|
|
246
|
-
let storage = StorageContext::new(backend.clone());
|
|
252
|
+
let storage = StorageContext::new(InMemoryStorageBackend::new());
|
|
247
253
|
let live_state = live_state_context();
|
|
248
|
-
crate::test_support::
|
|
254
|
+
crate::test_support::seed_global_branch_head(storage.clone()).await;
|
|
249
255
|
write_test_key_value(
|
|
250
256
|
storage.clone(),
|
|
251
257
|
DETERMINISTIC_SEQUENCE_KEY,
|
|
@@ -253,7 +259,11 @@ mod tests {
|
|
|
253
259
|
)
|
|
254
260
|
.await;
|
|
255
261
|
|
|
256
|
-
let reader = live_state.reader(
|
|
262
|
+
let reader = live_state.reader(
|
|
263
|
+
storage
|
|
264
|
+
.begin_read(StorageReadOptions::default())
|
|
265
|
+
.expect("read should open"),
|
|
266
|
+
);
|
|
257
267
|
let sequence = load_sequence(&reader)
|
|
258
268
|
.await
|
|
259
269
|
.expect("valid sequence should decode");
|
|
@@ -264,16 +274,11 @@ mod tests {
|
|
|
264
274
|
|
|
265
275
|
#[tokio::test]
|
|
266
276
|
async fn write_sequence_persists_untracked_global_key_value() {
|
|
267
|
-
let
|
|
268
|
-
let storage = StorageContext::new(backend.clone());
|
|
277
|
+
let storage = StorageContext::new(InMemoryStorageBackend::new());
|
|
269
278
|
let live_state = live_state_context();
|
|
270
|
-
crate::test_support::
|
|
271
|
-
let mut tx = storage
|
|
272
|
-
.begin_write_transaction()
|
|
273
|
-
.await
|
|
274
|
-
.expect("transaction should open");
|
|
279
|
+
crate::test_support::seed_global_branch_head(storage.clone()).await;
|
|
275
280
|
|
|
276
|
-
let mut writes =
|
|
281
|
+
let mut writes = storage.new_write_set();
|
|
277
282
|
stage_sequence(
|
|
278
283
|
&mut writes,
|
|
279
284
|
DeterministicSequence { highest_seen: 7 },
|
|
@@ -281,20 +286,20 @@ mod tests {
|
|
|
281
286
|
)
|
|
282
287
|
.await
|
|
283
288
|
.expect("sequence should stage");
|
|
284
|
-
|
|
285
|
-
.
|
|
286
|
-
.
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
289
|
+
storage
|
|
290
|
+
.commit_write_set(writes, StorageWriteOptions::default())
|
|
291
|
+
.expect("sequence should commit");
|
|
292
|
+
|
|
293
|
+
let reader = live_state.reader(
|
|
294
|
+
storage
|
|
295
|
+
.begin_read(StorageReadOptions::default())
|
|
296
|
+
.expect("read should open"),
|
|
297
|
+
);
|
|
291
298
|
let row = reader
|
|
292
299
|
.load_row(&LiveStateRowRequest {
|
|
293
300
|
schema_key: KEY_VALUE_SCHEMA_KEY.to_string(),
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
DETERMINISTIC_SEQUENCE_KEY,
|
|
297
|
-
),
|
|
301
|
+
branch_id: GLOBAL_BRANCH_ID.to_string(),
|
|
302
|
+
entity_pk: crate::entity_pk::EntityPk::single(DETERMINISTIC_SEQUENCE_KEY),
|
|
298
303
|
file_id: NullableKeyFilter::Null,
|
|
299
304
|
})
|
|
300
305
|
.await
|
|
@@ -311,26 +316,20 @@ mod tests {
|
|
|
311
316
|
}
|
|
312
317
|
|
|
313
318
|
async fn write_test_key_value(storage: StorageContext, key: &str, value: JsonValue) {
|
|
314
|
-
let mut tx = storage
|
|
315
|
-
.begin_write_transaction()
|
|
316
|
-
.await
|
|
317
|
-
.expect("transaction should open");
|
|
318
319
|
let snapshot_content = serde_json::to_string(&serde_json::json!({
|
|
319
320
|
"key": key,
|
|
320
321
|
"value": value,
|
|
321
322
|
}))
|
|
322
323
|
.expect("snapshot should serialize");
|
|
323
|
-
let mut writes =
|
|
324
|
+
let mut writes = storage.new_write_set();
|
|
324
325
|
let row = deterministic_key_value_row(key, &snapshot_content, "1970-01-01T00:00:00.000Z")
|
|
325
326
|
.expect("test key-value should canonicalize");
|
|
326
327
|
UntrackedStateContext::new()
|
|
327
328
|
.writer(&mut writes)
|
|
328
329
|
.stage_rows(std::iter::once(row.as_ref()))
|
|
329
330
|
.expect("test key-value should stage");
|
|
330
|
-
|
|
331
|
-
.
|
|
332
|
-
.
|
|
333
|
-
.expect("test key-value should apply");
|
|
334
|
-
tx.commit().await.expect("transaction should commit");
|
|
331
|
+
storage
|
|
332
|
+
.commit_write_set(writes, StorageWriteOptions::default())
|
|
333
|
+
.expect("test key-value should commit");
|
|
335
334
|
}
|
|
336
335
|
}
|