Skip to content

Commit 2325fb8

Browse files
committed
Allow overriding view name.
1 parent 45a6b2b commit 2325fb8

File tree

2 files changed

+19
-14
lines changed

2 files changed

+19
-14
lines changed

crates/core/src/util.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ pub fn extract_table_info(db: *mut sqlite::sqlite3, data: &str) -> Result<Manage
4444
// language=SQLite
4545
let statement = db.prepare_v2("SELECT
4646
json_extract(?1, '$.name') as name,
47+
ifnull(json_extract(?1, '$.view_name'), json_extract(?1, '$.name')) as view_name,
4748
json_extract(?1, '$.local_only') as local_only,
4849
json_extract(?1, '$.insert_only') as insert_only")?;
4950
statement.bind_text(1, data, sqlite::Destructor::STATIC)?;

crates/core/src/views.rs

Lines changed: 18 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,10 @@ fn powersync_view_sql_impl(
2222
let statement = extract_table_info(db, table)?;
2323

2424
let name = statement.column_text(0)?;
25-
let local_only = statement.column_int(1)? != 0;
25+
let view_name = statement.column_text(1)?;
26+
let local_only = statement.column_int(2)? != 0;
2627

27-
let quoted_name = quote_identifier(name);
28+
let quoted_name = quote_identifier(view_name);
2829
let internal_name = quote_internal_name(name, local_only);
2930

3031
let stmt2 = db.prepare_v2("select json_extract(e.value, '$.name') as name, json_extract(e.value, '$.type') as type from json_each(json_extract(?, '$.columns')) e")?;
@@ -68,12 +69,13 @@ fn powersync_trigger_delete_sql_impl(
6869
let statement = extract_table_info(ctx.db_handle(), table)?;
6970

7071
let name = statement.column_text(0)?;
71-
let local_only = statement.column_int(1)? != 0;
72-
let insert_only = statement.column_int(2)? != 0;
72+
let view_name = statement.column_text(1)?;
73+
let local_only = statement.column_int(2)? != 0;
74+
let insert_only = statement.column_int(3)? != 0;
7375

74-
let quoted_name = quote_identifier(name);
76+
let quoted_name = quote_identifier(view_name);
7577
let internal_name = quote_internal_name(name, local_only);
76-
let trigger_name = quote_identifier_prefixed("ps_view_delete_", name);
78+
let trigger_name = quote_identifier_prefixed("ps_view_delete_", view_name);
7779
let type_string = quote_string(name);
7880

7981
return if !local_only && !insert_only {
@@ -125,12 +127,13 @@ fn powersync_trigger_insert_sql_impl(
125127
let statement = extract_table_info(ctx.db_handle(), table)?;
126128

127129
let name = statement.column_text(0)?;
128-
let local_only = statement.column_int(1)? != 0;
129-
let insert_only = statement.column_int(2)? != 0;
130+
let view_name = statement.column_text(1)?;
131+
let local_only = statement.column_int(2)? != 0;
132+
let insert_only = statement.column_int(3)? != 0;
130133

131-
let quoted_name = quote_identifier(name);
134+
let quoted_name = quote_identifier(view_name);
132135
let internal_name = quote_internal_name(name, local_only);
133-
let trigger_name = quote_identifier_prefixed("ps_view_insert_", name);
136+
let trigger_name = quote_identifier_prefixed("ps_view_insert_", view_name);
134137
let type_string = quote_string(name);
135138

136139
let local_db = ctx.db_handle();
@@ -208,12 +211,13 @@ fn powersync_trigger_update_sql_impl(
208211
let statement = extract_table_info(ctx.db_handle(), table)?;
209212

210213
let name = statement.column_text(0)?;
211-
let local_only = statement.column_int(1)? != 0;
212-
let insert_only = statement.column_int(2)? != 0;
214+
let view_name = statement.column_text(1)?;
215+
let local_only = statement.column_int(2)? != 0;
216+
let insert_only = statement.column_int(3)? != 0;
213217

214-
let quoted_name = quote_identifier(name);
218+
let quoted_name = quote_identifier(view_name);
215219
let internal_name = quote_internal_name(name, local_only);
216-
let trigger_name = quote_identifier_prefixed("ps_view_update_", name);
220+
let trigger_name = quote_identifier_prefixed("ps_view_update_", view_name);
217221
let type_string = quote_string(name);
218222

219223
let db = ctx.db_handle();

0 commit comments

Comments
 (0)