@lix-js/sdk 0.6.0-preview.0 → 0.6.0-preview.2
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 +9 -0
- package/SKILL.md +468 -0
- package/dist/engine-wasm/index.d.ts +15 -11
- package/dist/engine-wasm/index.js +105 -38
- package/dist/engine-wasm/wasm/lix_engine.d.ts +14 -2
- package/dist/engine-wasm/wasm/lix_engine.js +18 -17
- package/dist/engine-wasm/wasm/lix_engine.wasm +0 -0
- package/dist/engine-wasm/wasm/lix_engine.wasm.d.ts +2 -1
- package/dist/generated/builtin-schemas.d.ts +31 -41
- package/dist/generated/builtin-schemas.js +52 -56
- package/dist/open-lix.d.ts +141 -24
- package/dist/open-lix.js +199 -35
- package/dist/sqlite/index.js +99 -22
- package/dist-engine-src/README.md +18 -0
- package/dist-engine-src/src/backend/kv.rs +358 -0
- package/dist-engine-src/src/backend/mod.rs +12 -0
- package/dist-engine-src/src/backend/testing.rs +658 -0
- package/dist-engine-src/src/backend/types.rs +96 -0
- package/dist-engine-src/src/binary_cas/chunking.rs +31 -0
- package/dist-engine-src/src/binary_cas/codec.rs +346 -0
- package/dist-engine-src/src/binary_cas/context.rs +139 -0
- package/dist-engine-src/src/binary_cas/kv.rs +1063 -0
- package/dist-engine-src/src/binary_cas/mod.rs +11 -0
- package/dist-engine-src/src/binary_cas/types.rs +127 -0
- package/dist-engine-src/src/cel/context.rs +86 -0
- package/dist-engine-src/src/cel/error.rs +19 -0
- package/dist-engine-src/src/cel/mod.rs +8 -0
- package/dist-engine-src/src/cel/provider.rs +9 -0
- package/dist-engine-src/src/cel/runtime.rs +167 -0
- package/dist-engine-src/src/cel/value.rs +50 -0
- package/dist-engine-src/src/changelog/codec.rs +321 -0
- package/dist-engine-src/src/changelog/context.rs +92 -0
- package/dist-engine-src/src/changelog/materialization.rs +121 -0
- package/dist-engine-src/src/changelog/mod.rs +13 -0
- package/dist-engine-src/src/changelog/reader.rs +20 -0
- package/dist-engine-src/src/changelog/storage.rs +220 -0
- package/dist-engine-src/src/changelog/types.rs +38 -0
- package/dist-engine-src/src/commit_graph/context.rs +1588 -0
- package/dist-engine-src/src/commit_graph/mod.rs +12 -0
- package/dist-engine-src/src/commit_graph/types.rs +145 -0
- package/dist-engine-src/src/commit_graph/walker.rs +780 -0
- package/dist-engine-src/src/common/error.rs +313 -0
- package/dist-engine-src/src/common/fingerprint.rs +3 -0
- package/dist-engine-src/src/common/fs_path.rs +1336 -0
- package/dist-engine-src/src/common/identity.rs +135 -0
- package/dist-engine-src/src/common/metadata.rs +35 -0
- package/dist-engine-src/src/common/mod.rs +23 -0
- package/dist-engine-src/src/common/types.rs +105 -0
- package/dist-engine-src/src/common/wire.rs +222 -0
- package/dist-engine-src/src/engine.rs +239 -0
- package/dist-engine-src/src/entity_identity.rs +285 -0
- package/dist-engine-src/src/functions/context.rs +327 -0
- package/dist-engine-src/src/functions/deterministic.rs +113 -0
- package/dist-engine-src/src/functions/mod.rs +18 -0
- package/dist-engine-src/src/functions/provider.rs +130 -0
- package/dist-engine-src/src/functions/state.rs +363 -0
- package/dist-engine-src/src/functions/types.rs +37 -0
- package/dist-engine-src/src/init.rs +505 -0
- package/dist-engine-src/src/json_store/compression.rs +77 -0
- package/dist-engine-src/src/json_store/context.rs +129 -0
- package/dist-engine-src/src/json_store/encoded.rs +15 -0
- package/dist-engine-src/src/json_store/mod.rs +9 -0
- package/dist-engine-src/src/json_store/store.rs +236 -0
- package/dist-engine-src/src/json_store/types.rs +52 -0
- package/dist-engine-src/src/lib.rs +61 -0
- package/dist-engine-src/src/live_state/context.rs +2241 -0
- package/dist-engine-src/src/live_state/mod.rs +15 -0
- package/dist-engine-src/src/live_state/overlay.rs +75 -0
- package/dist-engine-src/src/live_state/reader.rs +23 -0
- package/dist-engine-src/src/live_state/types.rs +239 -0
- package/dist-engine-src/src/live_state/visibility.rs +218 -0
- package/dist-engine-src/src/plugin/archive.rs +441 -0
- package/dist-engine-src/src/plugin/component.rs +183 -0
- package/dist-engine-src/src/plugin/install.rs +637 -0
- package/dist-engine-src/src/plugin/manifest.rs +516 -0
- package/dist-engine-src/src/plugin/materializer.rs +477 -0
- package/dist-engine-src/src/plugin/mod.rs +33 -0
- package/dist-engine-src/src/plugin/plugin_manifest.json +119 -0
- package/dist-engine-src/src/plugin/storage.rs +74 -0
- package/dist-engine-src/src/schema/annotations/defaults.rs +280 -0
- package/dist-engine-src/src/schema/annotations/mod.rs +1 -0
- package/dist-engine-src/src/schema/builtin/lix_account.json +22 -0
- package/dist-engine-src/src/schema/builtin/lix_active_account.json +30 -0
- package/dist-engine-src/src/schema/builtin/lix_binary_blob_ref.json +30 -0
- package/dist-engine-src/src/schema/builtin/lix_change.json +62 -0
- package/dist-engine-src/src/schema/builtin/lix_change_author.json +46 -0
- package/dist-engine-src/src/schema/builtin/lix_change_set.json +18 -0
- package/dist-engine-src/src/schema/builtin/lix_change_set_element.json +75 -0
- package/dist-engine-src/src/schema/builtin/lix_commit.json +62 -0
- package/dist-engine-src/src/schema/builtin/lix_commit_edge.json +46 -0
- package/dist-engine-src/src/schema/builtin/lix_directory_descriptor.json +53 -0
- package/dist-engine-src/src/schema/builtin/lix_entity_label.json +63 -0
- package/dist-engine-src/src/schema/builtin/lix_file_descriptor.json +53 -0
- package/dist-engine-src/src/schema/builtin/lix_key_value.json +41 -0
- package/dist-engine-src/src/schema/builtin/lix_label.json +22 -0
- package/dist-engine-src/src/schema/builtin/lix_registered_schema.json +31 -0
- package/dist-engine-src/src/schema/builtin/lix_version_descriptor.json +35 -0
- package/dist-engine-src/src/schema/builtin/lix_version_ref.json +49 -0
- package/dist-engine-src/src/schema/builtin/mod.rs +271 -0
- package/dist-engine-src/src/schema/definition.json +157 -0
- package/dist-engine-src/src/schema/definition.rs +636 -0
- package/dist-engine-src/src/schema/key.rs +206 -0
- package/dist-engine-src/src/schema/mod.rs +20 -0
- package/dist-engine-src/src/schema/seed.rs +14 -0
- package/dist-engine-src/src/schema/tests.rs +739 -0
- package/dist-engine-src/src/schema_registry.rs +294 -0
- package/dist-engine-src/src/session/context.rs +366 -0
- package/dist-engine-src/src/session/create_version.rs +80 -0
- package/dist-engine-src/src/session/execute.rs +447 -0
- package/dist-engine-src/src/session/merge/analysis.rs +102 -0
- package/dist-engine-src/src/session/merge/apply.rs +23 -0
- package/dist-engine-src/src/session/merge/conflicts.rs +62 -0
- package/dist-engine-src/src/session/merge/mod.rs +11 -0
- package/dist-engine-src/src/session/merge/stats.rs +65 -0
- package/dist-engine-src/src/session/merge/version.rs +437 -0
- package/dist-engine-src/src/session/mod.rs +25 -0
- package/dist-engine-src/src/session/switch_version.rs +121 -0
- package/dist-engine-src/src/sql2/change_provider.rs +337 -0
- package/dist-engine-src/src/sql2/classify.rs +147 -0
- package/dist-engine-src/src/sql2/commit_derived_provider.rs +591 -0
- package/dist-engine-src/src/sql2/context.rs +307 -0
- package/dist-engine-src/src/sql2/directory_history_provider.rs +623 -0
- package/dist-engine-src/src/sql2/directory_provider.rs +2405 -0
- package/dist-engine-src/src/sql2/dml.rs +148 -0
- package/dist-engine-src/src/sql2/entity_history_provider.rs +444 -0
- package/dist-engine-src/src/sql2/entity_provider.rs +2700 -0
- package/dist-engine-src/src/sql2/error.rs +196 -0
- package/dist-engine-src/src/sql2/execute.rs +3379 -0
- package/dist-engine-src/src/sql2/file_history_provider.rs +902 -0
- package/dist-engine-src/src/sql2/file_provider.rs +3254 -0
- package/dist-engine-src/src/sql2/filesystem_planner.rs +1526 -0
- package/dist-engine-src/src/sql2/filesystem_predicates.rs +159 -0
- package/dist-engine-src/src/sql2/filesystem_visibility.rs +369 -0
- package/dist-engine-src/src/sql2/history_projection.rs +80 -0
- package/dist-engine-src/src/sql2/history_provider.rs +418 -0
- package/dist-engine-src/src/sql2/history_route.rs +643 -0
- package/dist-engine-src/src/sql2/lix_state_provider.rs +2430 -0
- package/dist-engine-src/src/sql2/mod.rs +43 -0
- package/dist-engine-src/src/sql2/read_only.rs +65 -0
- package/dist-engine-src/src/sql2/record_batch.rs +17 -0
- package/dist-engine-src/src/sql2/result_metadata.rs +29 -0
- package/dist-engine-src/src/sql2/runtime.rs +60 -0
- package/dist-engine-src/src/sql2/session.rs +135 -0
- package/dist-engine-src/src/sql2/udfs/common.rs +295 -0
- package/dist-engine-src/src/sql2/udfs/lix_active_version_commit_id.rs +53 -0
- package/dist-engine-src/src/sql2/udfs/lix_empty_blob.rs +47 -0
- package/dist-engine-src/src/sql2/udfs/lix_json.rs +100 -0
- package/dist-engine-src/src/sql2/udfs/lix_json_get.rs +99 -0
- package/dist-engine-src/src/sql2/udfs/lix_json_get_text.rs +99 -0
- package/dist-engine-src/src/sql2/udfs/lix_text_decode.rs +82 -0
- package/dist-engine-src/src/sql2/udfs/lix_text_encode.rs +85 -0
- package/dist-engine-src/src/sql2/udfs/lix_uuid_v7.rs +76 -0
- package/dist-engine-src/src/sql2/udfs/mod.rs +82 -0
- package/dist-engine-src/src/sql2/version_provider.rs +1187 -0
- package/dist-engine-src/src/sql2/version_scope.rs +394 -0
- package/dist-engine-src/src/sql2/write_normalization.rs +345 -0
- package/dist-engine-src/src/storage/context.rs +356 -0
- package/dist-engine-src/src/storage/mod.rs +14 -0
- package/dist-engine-src/src/storage/read_scope.rs +88 -0
- package/dist-engine-src/src/storage/types.rs +501 -0
- package/dist-engine-src/src/storage_bench.rs +3406 -0
- package/dist-engine-src/src/test_support.rs +81 -0
- package/dist-engine-src/src/tracked_state/by_file_index.rs +102 -0
- package/dist-engine-src/src/tracked_state/codec.rs +747 -0
- package/dist-engine-src/src/tracked_state/context.rs +983 -0
- package/dist-engine-src/src/tracked_state/diff.rs +494 -0
- package/dist-engine-src/src/tracked_state/materialization.rs +141 -0
- package/dist-engine-src/src/tracked_state/merge.rs +474 -0
- package/dist-engine-src/src/tracked_state/mod.rs +31 -0
- package/dist-engine-src/src/tracked_state/rebuild.rs +771 -0
- package/dist-engine-src/src/tracked_state/storage.rs +243 -0
- package/dist-engine-src/src/tracked_state/tree.rs +2744 -0
- package/dist-engine-src/src/tracked_state/tree_types.rs +176 -0
- package/dist-engine-src/src/tracked_state/types.rs +61 -0
- package/dist-engine-src/src/transaction/commit.rs +1224 -0
- package/dist-engine-src/src/transaction/context.rs +1307 -0
- package/dist-engine-src/src/transaction/live_state_overlay.rs +34 -0
- package/dist-engine-src/src/transaction/mod.rs +11 -0
- package/dist-engine-src/src/transaction/normalization.rs +1026 -0
- package/dist-engine-src/src/transaction/schema_resolver.rs +127 -0
- package/dist-engine-src/src/transaction/staging.rs +1436 -0
- package/dist-engine-src/src/transaction/types.rs +351 -0
- package/dist-engine-src/src/transaction/validation.rs +4811 -0
- package/dist-engine-src/src/untracked_state/codec.rs +363 -0
- package/dist-engine-src/src/untracked_state/context.rs +82 -0
- package/dist-engine-src/src/untracked_state/materialization.rs +157 -0
- package/dist-engine-src/src/untracked_state/mod.rs +17 -0
- package/dist-engine-src/src/untracked_state/storage.rs +348 -0
- package/dist-engine-src/src/untracked_state/types.rs +96 -0
- package/dist-engine-src/src/version/context.rs +52 -0
- package/dist-engine-src/src/version/mod.rs +12 -0
- package/dist-engine-src/src/version/refs.rs +421 -0
- package/dist-engine-src/src/version/stage_rows.rs +71 -0
- package/dist-engine-src/src/version/types.rs +21 -0
- package/dist-engine-src/src/wasm/mod.rs +60 -0
- package/package.json +68 -63
|
@@ -0,0 +1,351 @@
|
|
|
1
|
+
use std::collections::BTreeSet;
|
|
2
|
+
|
|
3
|
+
use crate::entity_identity::EntityIdentity;
|
|
4
|
+
use crate::live_state::LiveStateRow;
|
|
5
|
+
use crate::tracked_state::TrackedStateRow;
|
|
6
|
+
use crate::untracked_state::MaterializedUntrackedStateRow;
|
|
7
|
+
use crate::RowMetadata;
|
|
8
|
+
|
|
9
|
+
/// Incoming state row before transaction hydration.
|
|
10
|
+
///
|
|
11
|
+
/// Write frontends produce this shape after decoding their own surface. The
|
|
12
|
+
/// transaction later assigns generated fields and turns it into a
|
|
13
|
+
/// `StagedStateRow`.
|
|
14
|
+
///
|
|
15
|
+
/// SQL providers stage semantic rows, not final storage rows. INSERT providers
|
|
16
|
+
/// may omit defaulted snapshot fields and leave `entity_id` unset when the
|
|
17
|
+
/// target schema has an `x-lix-primary-key`; transaction normalization applies
|
|
18
|
+
/// schema defaults and derives the final identity. Typed UPDATE providers must
|
|
19
|
+
/// stage full rewritten snapshots after applying column assignments to the
|
|
20
|
+
/// existing row. Raw `lix_state` snapshot updates are replacement writes, not
|
|
21
|
+
/// implicit patches.
|
|
22
|
+
#[derive(Debug, Clone, PartialEq, Eq, serde::Serialize, serde::Deserialize)]
|
|
23
|
+
pub(crate) struct StageRow {
|
|
24
|
+
pub(crate) entity_id: Option<EntityIdentity>,
|
|
25
|
+
pub(crate) schema_key: String,
|
|
26
|
+
pub(crate) file_id: Option<String>,
|
|
27
|
+
pub(crate) snapshot_content: Option<String>,
|
|
28
|
+
pub(crate) metadata: Option<RowMetadata>,
|
|
29
|
+
pub(crate) origin: Option<StageRowOrigin>,
|
|
30
|
+
pub(crate) schema_version: String,
|
|
31
|
+
pub(crate) created_at: Option<String>,
|
|
32
|
+
pub(crate) updated_at: Option<String>,
|
|
33
|
+
pub(crate) global: bool,
|
|
34
|
+
pub(crate) change_id: Option<String>,
|
|
35
|
+
pub(crate) commit_id: Option<String>,
|
|
36
|
+
pub(crate) untracked: bool,
|
|
37
|
+
pub(crate) version_id: String,
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
impl StageRow {
|
|
41
|
+
pub(crate) fn schema_scope_version_id(&self) -> &str {
|
|
42
|
+
if self.global {
|
|
43
|
+
crate::GLOBAL_VERSION_ID
|
|
44
|
+
} else {
|
|
45
|
+
self.version_id.as_str()
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/// User-facing write operation that produced one physical staged row.
|
|
51
|
+
///
|
|
52
|
+
/// Composite SQL surfaces such as `lix_file` lower one logical row into
|
|
53
|
+
/// multiple state rows. The transaction layer owns final constraint validation,
|
|
54
|
+
/// but error messages should stay in the vocabulary of the logical operation
|
|
55
|
+
/// when the caller did not write the physical state schema directly.
|
|
56
|
+
#[derive(Debug, Clone, PartialEq, Eq, serde::Serialize, serde::Deserialize)]
|
|
57
|
+
pub(crate) struct StageRowOrigin {
|
|
58
|
+
pub(crate) surface: String,
|
|
59
|
+
pub(crate) operation: StageWriteOperation,
|
|
60
|
+
pub(crate) primary_key: Option<LogicalPrimaryKey>,
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
#[derive(Debug, Clone, Copy, PartialEq, Eq, serde::Serialize, serde::Deserialize)]
|
|
64
|
+
pub(crate) enum StageWriteOperation {
|
|
65
|
+
Insert,
|
|
66
|
+
Update,
|
|
67
|
+
Delete,
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
#[derive(Debug, Clone, PartialEq, Eq, serde::Serialize, serde::Deserialize)]
|
|
71
|
+
pub(crate) struct LogicalPrimaryKey {
|
|
72
|
+
pub(crate) columns: Vec<String>,
|
|
73
|
+
pub(crate) values: Vec<String>,
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
/// Incoming file payload paired with staged filesystem rows.
|
|
77
|
+
#[derive(Debug, Clone, PartialEq, Eq)]
|
|
78
|
+
pub(crate) struct StageFileData {
|
|
79
|
+
pub(crate) file_id: String,
|
|
80
|
+
pub(crate) version_id: String,
|
|
81
|
+
pub(crate) untracked: bool,
|
|
82
|
+
pub(crate) data: Vec<u8>,
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
/// Existing canonical change adopted into another version's tracked projection.
|
|
86
|
+
///
|
|
87
|
+
/// Merges use this path when the source side already owns the canonical
|
|
88
|
+
/// changelog fact. The target commit references that existing change id and
|
|
89
|
+
/// writes a target-version projection row without appending a copied change.
|
|
90
|
+
#[derive(Debug, Clone, PartialEq, Eq)]
|
|
91
|
+
pub(crate) struct StageAdoptedChange {
|
|
92
|
+
pub(crate) version_id: String,
|
|
93
|
+
pub(crate) change_id: String,
|
|
94
|
+
pub(crate) projected_row: TrackedStateRow,
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
/// One decoded write batch before transaction hydration.
|
|
98
|
+
#[derive(Debug, Clone, PartialEq, Eq)]
|
|
99
|
+
pub(crate) enum StageWrite {
|
|
100
|
+
Rows {
|
|
101
|
+
mode: StageWriteMode,
|
|
102
|
+
rows: Vec<StageRow>,
|
|
103
|
+
},
|
|
104
|
+
RowsWithFileData {
|
|
105
|
+
mode: StageWriteMode,
|
|
106
|
+
rows: Vec<StageRow>,
|
|
107
|
+
file_data: Vec<StageFileData>,
|
|
108
|
+
count: u64,
|
|
109
|
+
},
|
|
110
|
+
AdoptedChanges {
|
|
111
|
+
changes: Vec<StageAdoptedChange>,
|
|
112
|
+
},
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
|
|
116
|
+
pub(crate) enum StageWriteMode {
|
|
117
|
+
Insert,
|
|
118
|
+
Replace,
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
/// Result returned after staging a decoded write batch.
|
|
122
|
+
#[derive(Debug, Clone, PartialEq, Eq)]
|
|
123
|
+
pub(crate) struct StageWriteOutcome {
|
|
124
|
+
pub(crate) count: u64,
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
/// Transaction-hydrated state row.
|
|
128
|
+
///
|
|
129
|
+
/// This is the row form owned by a write transaction after generated fields
|
|
130
|
+
/// have been assigned but before the rows are durably flushed.
|
|
131
|
+
#[derive(Debug, Clone, PartialEq, Eq)]
|
|
132
|
+
pub(crate) struct StagedStateRow {
|
|
133
|
+
pub(crate) entity_id: EntityIdentity,
|
|
134
|
+
pub(crate) schema_key: String,
|
|
135
|
+
pub(crate) file_id: Option<String>,
|
|
136
|
+
pub(crate) snapshot_content: Option<String>,
|
|
137
|
+
pub(crate) metadata: Option<RowMetadata>,
|
|
138
|
+
pub(crate) origin: Option<StageRowOrigin>,
|
|
139
|
+
pub(crate) schema_version: String,
|
|
140
|
+
pub(crate) created_at: String,
|
|
141
|
+
pub(crate) updated_at: String,
|
|
142
|
+
pub(crate) global: bool,
|
|
143
|
+
pub(crate) change_id: Option<String>,
|
|
144
|
+
pub(crate) commit_id: Option<String>,
|
|
145
|
+
pub(crate) untracked: bool,
|
|
146
|
+
pub(crate) version_id: String,
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
impl StagedStateRow {
|
|
150
|
+
pub(crate) fn schema_scope_version_id(&self) -> &str {
|
|
151
|
+
if self.global {
|
|
152
|
+
crate::GLOBAL_VERSION_ID
|
|
153
|
+
} else {
|
|
154
|
+
self.version_id.as_str()
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
/// Transaction-hydrated projection for an adopted canonical change.
|
|
160
|
+
#[derive(Debug, Clone, PartialEq, Eq)]
|
|
161
|
+
pub(crate) struct StagedAdoptedStateRow {
|
|
162
|
+
pub(crate) entity_id: EntityIdentity,
|
|
163
|
+
pub(crate) schema_key: String,
|
|
164
|
+
pub(crate) file_id: Option<String>,
|
|
165
|
+
pub(crate) snapshot_content: Option<String>,
|
|
166
|
+
pub(crate) metadata: Option<RowMetadata>,
|
|
167
|
+
pub(crate) schema_version: String,
|
|
168
|
+
pub(crate) created_at: String,
|
|
169
|
+
pub(crate) updated_at: String,
|
|
170
|
+
pub(crate) global: bool,
|
|
171
|
+
pub(crate) change_id: String,
|
|
172
|
+
pub(crate) commit_id: String,
|
|
173
|
+
pub(crate) version_id: String,
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
impl StagedAdoptedStateRow {
|
|
177
|
+
pub(crate) fn schema_scope_version_id(&self) -> &str {
|
|
178
|
+
if self.global {
|
|
179
|
+
crate::GLOBAL_VERSION_ID
|
|
180
|
+
} else {
|
|
181
|
+
self.version_id.as_str()
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
impl From<StagedStateRow> for LiveStateRow {
|
|
187
|
+
fn from(row: StagedStateRow) -> Self {
|
|
188
|
+
LiveStateRow {
|
|
189
|
+
entity_id: row.entity_id,
|
|
190
|
+
schema_key: row.schema_key,
|
|
191
|
+
file_id: row.file_id,
|
|
192
|
+
snapshot_content: row.snapshot_content,
|
|
193
|
+
metadata: row.metadata,
|
|
194
|
+
schema_version: row.schema_version,
|
|
195
|
+
created_at: row.created_at,
|
|
196
|
+
updated_at: row.updated_at,
|
|
197
|
+
global: row.global,
|
|
198
|
+
change_id: row.change_id,
|
|
199
|
+
commit_id: row.commit_id,
|
|
200
|
+
untracked: row.untracked,
|
|
201
|
+
version_id: row.version_id,
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
impl From<&StagedStateRow> for LiveStateRow {
|
|
207
|
+
fn from(row: &StagedStateRow) -> Self {
|
|
208
|
+
LiveStateRow {
|
|
209
|
+
entity_id: row.entity_id.clone(),
|
|
210
|
+
schema_key: row.schema_key.clone(),
|
|
211
|
+
file_id: row.file_id.clone(),
|
|
212
|
+
snapshot_content: row.snapshot_content.clone(),
|
|
213
|
+
metadata: row.metadata.clone(),
|
|
214
|
+
schema_version: row.schema_version.clone(),
|
|
215
|
+
created_at: row.created_at.clone(),
|
|
216
|
+
updated_at: row.updated_at.clone(),
|
|
217
|
+
global: row.global,
|
|
218
|
+
change_id: row.change_id.clone(),
|
|
219
|
+
commit_id: row.commit_id.clone(),
|
|
220
|
+
untracked: row.untracked,
|
|
221
|
+
version_id: row.version_id.clone(),
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
impl From<StagedAdoptedStateRow> for LiveStateRow {
|
|
227
|
+
fn from(row: StagedAdoptedStateRow) -> Self {
|
|
228
|
+
LiveStateRow {
|
|
229
|
+
entity_id: row.entity_id,
|
|
230
|
+
schema_key: row.schema_key,
|
|
231
|
+
file_id: row.file_id,
|
|
232
|
+
snapshot_content: row.snapshot_content,
|
|
233
|
+
metadata: row.metadata,
|
|
234
|
+
schema_version: row.schema_version,
|
|
235
|
+
created_at: row.created_at,
|
|
236
|
+
updated_at: row.updated_at,
|
|
237
|
+
global: row.global,
|
|
238
|
+
change_id: Some(row.change_id),
|
|
239
|
+
commit_id: Some(row.commit_id),
|
|
240
|
+
untracked: false,
|
|
241
|
+
version_id: row.version_id,
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
impl From<&StagedAdoptedStateRow> for LiveStateRow {
|
|
247
|
+
fn from(row: &StagedAdoptedStateRow) -> Self {
|
|
248
|
+
LiveStateRow {
|
|
249
|
+
entity_id: row.entity_id.clone(),
|
|
250
|
+
schema_key: row.schema_key.clone(),
|
|
251
|
+
file_id: row.file_id.clone(),
|
|
252
|
+
snapshot_content: row.snapshot_content.clone(),
|
|
253
|
+
metadata: row.metadata.clone(),
|
|
254
|
+
schema_version: row.schema_version.clone(),
|
|
255
|
+
created_at: row.created_at.clone(),
|
|
256
|
+
updated_at: row.updated_at.clone(),
|
|
257
|
+
global: row.global,
|
|
258
|
+
change_id: Some(row.change_id.clone()),
|
|
259
|
+
commit_id: Some(row.commit_id.clone()),
|
|
260
|
+
untracked: false,
|
|
261
|
+
version_id: row.version_id.clone(),
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
impl From<&StagedAdoptedStateRow> for StagedStateRow {
|
|
267
|
+
fn from(row: &StagedAdoptedStateRow) -> Self {
|
|
268
|
+
StagedStateRow {
|
|
269
|
+
entity_id: row.entity_id.clone(),
|
|
270
|
+
schema_key: row.schema_key.clone(),
|
|
271
|
+
file_id: row.file_id.clone(),
|
|
272
|
+
snapshot_content: row.snapshot_content.clone(),
|
|
273
|
+
metadata: row.metadata.clone(),
|
|
274
|
+
origin: None,
|
|
275
|
+
schema_version: row.schema_version.clone(),
|
|
276
|
+
created_at: row.created_at.clone(),
|
|
277
|
+
updated_at: row.updated_at.clone(),
|
|
278
|
+
global: row.global,
|
|
279
|
+
change_id: Some(row.change_id.clone()),
|
|
280
|
+
commit_id: Some(row.commit_id.clone()),
|
|
281
|
+
untracked: false,
|
|
282
|
+
version_id: row.version_id.clone(),
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
impl From<StagedStateRow> for MaterializedUntrackedStateRow {
|
|
288
|
+
fn from(row: StagedStateRow) -> Self {
|
|
289
|
+
MaterializedUntrackedStateRow {
|
|
290
|
+
entity_id: row.entity_id,
|
|
291
|
+
schema_key: row.schema_key,
|
|
292
|
+
file_id: row.file_id,
|
|
293
|
+
snapshot_content: row.snapshot_content,
|
|
294
|
+
metadata: row.metadata,
|
|
295
|
+
schema_version: row.schema_version,
|
|
296
|
+
created_at: row.created_at,
|
|
297
|
+
updated_at: row.updated_at,
|
|
298
|
+
global: row.global,
|
|
299
|
+
version_id: row.version_id,
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
/// Transaction-local introduced-change membership accumulated while rows are staged.
|
|
305
|
+
///
|
|
306
|
+
/// Final commit row materialization owns commit ids, parent heads, and commit
|
|
307
|
+
/// row timestamps. Staging only tracks which hydrated tracked changes the
|
|
308
|
+
/// future commit introduces for a version.
|
|
309
|
+
#[derive(Debug, Clone, Default, PartialEq, Eq)]
|
|
310
|
+
pub(crate) struct StagedCommitMembers {
|
|
311
|
+
pub(crate) commit_id: String,
|
|
312
|
+
pub(crate) commit_change_id: String,
|
|
313
|
+
pub(crate) change_set_id: String,
|
|
314
|
+
pub(crate) created_at: String,
|
|
315
|
+
pub(crate) change_ids: BTreeSet<String>,
|
|
316
|
+
pub(crate) allow_empty: bool,
|
|
317
|
+
}
|
|
318
|
+
|
|
319
|
+
impl StagedCommitMembers {
|
|
320
|
+
pub(crate) fn new(
|
|
321
|
+
commit_id: String,
|
|
322
|
+
commit_change_id: String,
|
|
323
|
+
change_set_id: String,
|
|
324
|
+
created_at: String,
|
|
325
|
+
) -> Self {
|
|
326
|
+
Self {
|
|
327
|
+
commit_id,
|
|
328
|
+
commit_change_id,
|
|
329
|
+
change_set_id,
|
|
330
|
+
created_at,
|
|
331
|
+
change_ids: BTreeSet::new(),
|
|
332
|
+
allow_empty: false,
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
|
|
336
|
+
pub(crate) fn add_change_id(&mut self, change_id: String) {
|
|
337
|
+
self.change_ids.insert(change_id);
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
pub(crate) fn remove_change_id(&mut self, change_id: &str) {
|
|
341
|
+
self.change_ids.remove(change_id);
|
|
342
|
+
}
|
|
343
|
+
|
|
344
|
+
pub(crate) fn is_empty(&self) -> bool {
|
|
345
|
+
self.change_ids.is_empty()
|
|
346
|
+
}
|
|
347
|
+
|
|
348
|
+
pub(crate) fn allow_empty(&mut self) {
|
|
349
|
+
self.allow_empty = true;
|
|
350
|
+
}
|
|
351
|
+
}
|