Skip to content

Commit c7b7401

Browse files
committed
Apply typename limit to table names in SQL queries
1 parent d662e56 commit c7b7401

File tree

1 file changed

+21
-10
lines changed

1 file changed

+21
-10
lines changed

asn1rs-model/src/gen/rust/shared_psql.rs

Lines changed: 21 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,19 +4,23 @@ use crate::model::sql::Sql;
44
use crate::model::{Model, RustType};
55

66
pub(crate) fn select_statement_single(name: &str) -> String {
7+
let name = Model::<Sql>::sql_definition_name(name);
78
format!("SELECT * FROM {} WHERE id = $1", name)
89
}
910

1011
#[cfg(feature = "async-psql")]
1112
pub(crate) fn select_statement_many(name: &str) -> String {
13+
let name = Model::<Sql>::sql_definition_name(name);
1214
format!("SELECT * FROM {} WHERE id = ANY($1)", name)
1315
}
1416

1517
pub(crate) fn tuple_struct_insert_statement(name: &str) -> String {
18+
let name = Model::<Sql>::sql_definition_name(name);
1619
format!("INSERT INTO {} DEFAULT VALUES RETURNING id", name)
1720
}
1821

1922
pub(crate) fn struct_insert_statement(name: &str, fields: &[Field]) -> String {
23+
let name = Model::<Sql>::sql_definition_name(name);
2024
format!(
2125
"INSERT INTO {}({}) VALUES({}) RETURNING id",
2226
name,
@@ -44,6 +48,7 @@ pub(crate) fn struct_insert_statement(name: &str, fields: &[Field]) -> String {
4448
}
4549

4650
pub(crate) fn data_enum_insert_statement(name: &str, enumeration: &DataEnum) -> String {
51+
let name = Model::<Sql>::sql_definition_name(name);
4752
format!(
4853
"INSERT INTO {}({}) VALUES({}) RETURNING id",
4954
name,
@@ -64,7 +69,10 @@ pub(crate) fn data_enum_insert_statement(name: &str, enumeration: &DataEnum) ->
6469
pub(crate) fn struct_list_entry_insert_statement(struct_name: &str, field_name: &str) -> String {
6570
format!(
6671
"INSERT INTO {}(list, value) VALUES ($1, $2)",
67-
Model::<Sql>::struct_list_entry_table_name(struct_name, field_name),
72+
Model::<Sql>::sql_definition_name(&Model::<Sql>::struct_list_entry_table_name(
73+
struct_name,
74+
field_name
75+
)),
6876
)
6977
}
7078

@@ -73,7 +81,9 @@ pub(crate) fn struct_list_entry_select_referenced_value_statement(
7381
field_name: &str,
7482
other_type: &str,
7583
) -> String {
76-
let listentry_table = Model::<Sql>::struct_list_entry_table_name(struct_name, field_name);
84+
let listentry_table = Model::<Sql>::sql_definition_name(
85+
&Model::<Sql>::struct_list_entry_table_name(struct_name, field_name),
86+
);
7787
format!(
7888
"SELECT * FROM {} WHERE id IN (SELECT value FROM {} WHERE list = $1)",
7989
RustCodeGenerator::rust_variant_name(other_type),
@@ -85,25 +95,26 @@ pub(crate) fn struct_list_entry_select_value_statement(
8595
struct_name: &str,
8696
field_name: &str,
8797
) -> String {
88-
let listentry_table = Model::<Sql>::struct_list_entry_table_name(struct_name, field_name);
98+
let listentry_table = Model::<Sql>::sql_definition_name(
99+
&Model::<Sql>::struct_list_entry_table_name(struct_name, field_name),
100+
);
89101
format!("SELECT value FROM {} WHERE list = $1", listentry_table,)
90102
}
91103

92104
pub(crate) fn list_entry_insert_statement(name: &str) -> String {
93-
format!("INSERT INTO {}ListEntry(list, value) VALUES ($1, $2)", name)
105+
let name = Model::<Sql>::sql_definition_name(&format!("{name}ListEntry"));
106+
format!("INSERT INTO {}(list, value) VALUES ($1, $2)", name)
94107
}
95108

96109
pub(crate) fn list_entry_query_statement(name: &str, inner: &RustType) -> String {
110+
let name_le = Model::<Sql>::sql_definition_name(&format!("{name}ListEntry"));
97111
if Model::<Sql>::is_primitive(inner) {
98-
format!(
99-
"SELECT value FROM {}ListEntry WHERE {}ListEntry.list = $1",
100-
name, name
101-
)
112+
format!("SELECT value FROM {name_le} WHERE {name_le}.list = $1",)
102113
} else {
103114
let inner = inner.clone().as_inner_type().to_string();
115+
let inner = Model::<Sql>::sql_definition_name(&inner);
104116
format!(
105-
"SELECT * FROM {} INNER JOIN {}ListEntry ON {}.id = {}ListEntry.value WHERE {}ListEntry.list = $1",
106-
inner, name, inner, name, name
117+
"SELECT * FROM {inner} INNER JOIN {name_le} ON {inner}.id = {name_le}.value WHERE {name_le}.list = $1"
107118
)
108119
}
109120
}

0 commit comments

Comments
 (0)