sqlx_named_bind/
builder.rs1use regex::Regex;
2
3pub fn build_query(template: &str) -> crate::Result<String> {
17 let regex = Regex::new(r":[a-zA-Z0-9_]+")?;
18 let replaced = regex.replace_all(template, "?").into_owned();
19 Ok(replaced)
20}
21
22#[cfg(test)]
23mod tests {
24 use super::*;
25
26 #[test]
27 fn test_build_query_single_param() {
28 let result = build_query("SELECT * FROM users WHERE id = :id").unwrap();
29 assert_eq!(result, "SELECT * FROM users WHERE id = ?");
30 }
31
32 #[test]
33 fn test_build_query_multiple_params() {
34 let result = build_query("SELECT * FROM users WHERE id = :id AND name = :name").unwrap();
35 assert_eq!(result, "SELECT * FROM users WHERE id = ? AND name = ?");
36 }
37
38 #[test]
39 fn test_build_query_repeated_params() {
40 let result = build_query("SELECT * FROM users WHERE id = :id OR user_id = :id").unwrap();
41 assert_eq!(result, "SELECT * FROM users WHERE id = ? OR user_id = ?");
42 }
43
44 #[test]
45 fn test_build_query_no_params() {
46 let result = build_query("SELECT * FROM users").unwrap();
47 assert_eq!(result, "SELECT * FROM users");
48 }
49
50 #[test]
51 fn test_build_query_with_underscores() {
52 let result = build_query("SELECT * FROM users WHERE user_id = :user_id").unwrap();
53 assert_eq!(result, "SELECT * FROM users WHERE user_id = ?");
54 }
55}