Skip to content

Commit c1ff271

Browse files
committed
Adopt for insert statements
1 parent cf94c6f commit c1ff271

File tree

1 file changed

+8
-9
lines changed

1 file changed

+8
-9
lines changed

crates/core/src/views.rs

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -176,10 +176,10 @@ fn powersync_trigger_insert_sql_impl(
176176

177177
let json_fragment = json_object_fragment("NEW", &mut table_info.column_names())?;
178178

179-
let metadata_fragment = if table_info.flags.include_metadata() {
180-
", 'metadata', NEW._metadata"
179+
let (metadata_key, metadata_value) = if table_info.flags.include_metadata() {
180+
(",metadata", ",NEW._metadata")
181181
} else {
182-
""
182+
("", "")
183183
};
184184

185185
return if !local_only && !insert_only {
@@ -194,12 +194,9 @@ fn powersync_trigger_insert_sql_impl(
194194
WHEN (typeof(NEW.id) != 'text')
195195
THEN RAISE (FAIL, 'id should be text')
196196
END;
197-
INSERT INTO {internal_name}
198-
SELECT NEW.id, {json_fragment};
199-
INSERT INTO powersync_crud_(data) VALUES(json_object('op', 'PUT', 'type', {:}, 'id', NEW.id, 'data', json(powersync_diff('{{}}', {:})){metadata_fragment}));
200-
INSERT OR IGNORE INTO ps_updated_rows(row_type, row_id) VALUES({type_string}, NEW.id);
201-
INSERT OR REPLACE INTO ps_buckets(name, last_op, target_op) VALUES('$local', 0, {MAX_OP_ID});
202-
END", type_string, json_fragment);
197+
INSERT INTO {internal_name} SELECT NEW.id, {json_fragment};
198+
INSERT INTO powersync_crud(op,id,type,data{metadata_key}) VALUES ('PUT',NEW.id,{type_string},json(powersync_diff('{{}}', {:})){metadata_value});
199+
END", json_fragment);
203200
Ok(trigger)
204201
} else if local_only {
205202
let trigger = format!(
@@ -213,6 +210,8 @@ fn powersync_trigger_insert_sql_impl(
213210
);
214211
Ok(trigger)
215212
} else if insert_only {
213+
// This is using the manual powersync_crud_ instead of powersync_crud because insert-only
214+
// writes shouldn't prevent us from receiving new data.
216215
let trigger = format!("\
217216
CREATE TRIGGER {trigger_name}
218217
INSTEAD OF INSERT ON {quoted_name}

0 commit comments

Comments
 (0)