Skip to content

Commit be9485f

Browse files
committed
feat: remove schema name in sqlx annotation for sql types
1 parent 8fc84df commit be9485f

File tree

6 files changed

+13
-33
lines changed

6 files changed

+13
-33
lines changed

Cargo.lock

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

crates/sqlx_gen/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "sqlx-gen"
3-
version = "0.4.6"
3+
version = "0.4.7"
44
edition = "2021"
55
description = "Generate Rust structs from database schema introspection"
66
license = "MIT"

crates/sqlx_gen/src/codegen/composite_gen.rs

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -44,12 +44,7 @@ pub fn generate_composite(
4444
derive_tokens.push(quote! { #ident });
4545
}
4646

47-
// Schema-qualify the type name for non-public schemas so sqlx can find the type
48-
let pg_name = if composite.schema_name != "public" {
49-
format!("{}.{}", composite.schema_name, composite.name)
50-
} else {
51-
composite.name.clone()
52-
};
47+
let pg_name = &composite.name;
5348
let type_attr = quote! { #[sqlx(type_name = #pg_name)] };
5449

5550
let fields: Vec<TokenStream> = composite
@@ -194,7 +189,7 @@ mod tests {
194189
let schema = SchemaInfo::default();
195190
let (tokens, _) = generate_composite(&c, DatabaseKind::Postgres, &schema, &[], &HashMap::new());
196191
let code = parse_and_format(&tokens);
197-
assert!(code.contains("sqlx(type_name = \"geo.point\")"));
192+
assert!(code.contains("sqlx(type_name = \"point\")"));
198193
}
199194

200195
#[test]

crates/sqlx_gen/src/codegen/enum_gen.rs

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -39,13 +39,8 @@ pub fn generate_enum(
3939
}
4040

4141
// For PG, add #[sqlx(type_name = "...")]
42-
// Schema-qualify the type name for non-public schemas so sqlx can find the type
4342
let type_attr = if db_kind == DatabaseKind::Postgres {
44-
let pg_name = if enum_info.schema_name != "public" {
45-
format!("{}.{}", enum_info.schema_name, enum_info.name)
46-
} else {
47-
enum_info.name.clone()
48-
};
43+
let pg_name = &enum_info.name;
4944
quote! { #[sqlx(type_name = #pg_name)] }
5045
} else {
5146
quote! {}
@@ -193,7 +188,7 @@ mod tests {
193188
};
194189
let (tokens, _) = generate_enum(&e, DatabaseKind::Postgres, &[]);
195190
let code = parse_and_format(&tokens);
196-
assert!(code.contains("sqlx(type_name = \"auth.role\")"));
191+
assert!(code.contains("sqlx(type_name = \"role\")"));
197192
}
198193

199194
#[test]

crates/sqlx_gen/src/codegen/struct_gen.rs

Lines changed: 5 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ pub fn generate_struct(
121121

122122
/// Detect if a column uses a custom SQL type (enum or composite) and return the qualified
123123
/// SQL type name for casting, plus whether it's an array.
124-
/// Returns `(Some("schema.type_name"), true)` for arrays of custom types,
124+
/// Returns `(Some("type_name"), true)` for arrays of custom types,
125125
/// `(Some("type_name"), false)` for scalar custom types, or `(None, false)` for built-in types.
126126
fn detect_custom_sql_type(udt_name: &str, schema_info: &SchemaInfo) -> (Option<String>, bool) {
127127
let (base_name, is_array) = match udt_name.strip_prefix('_') {
@@ -130,23 +130,13 @@ fn detect_custom_sql_type(udt_name: &str, schema_info: &SchemaInfo) -> (Option<S
130130
};
131131

132132
// Check enums
133-
if let Some(e) = schema_info.enums.iter().find(|e| e.name == base_name) {
134-
let qualified = if e.schema_name == "public" {
135-
base_name.to_string()
136-
} else {
137-
format!("{}.{}", e.schema_name, base_name)
138-
};
139-
return (Some(qualified), is_array);
133+
if schema_info.enums.iter().any(|e| e.name == base_name) {
134+
return (Some(base_name.to_string()), is_array);
140135
}
141136

142137
// Check composite types
143-
if let Some(c) = schema_info.composite_types.iter().find(|c| c.name == base_name) {
144-
let qualified = if c.schema_name == "public" {
145-
base_name.to_string()
146-
} else {
147-
format!("{}.{}", c.schema_name, base_name)
148-
};
149-
return (Some(qualified), is_array);
138+
if schema_info.composite_types.iter().any(|c| c.name == base_name) {
139+
return (Some(base_name.to_string()), is_array);
150140
}
151141

152142
// Check if this is a non-builtin type that would hit the typemap fallback

crates/sqlx_gen_macros/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "sqlx-gen-macros"
3-
version = "0.4.6"
3+
version = "0.4.7"
44
edition = "2021"
55
description = "No-op attribute macros for sqlx-gen generated code"
66
license = "MIT"

0 commit comments

Comments
 (0)