import os
import re
from pathlib import Path
def fix_sqlx_query(content):
pattern = r'sqlx::query\s*\(\s*r#"([^"]*)"#\s*,([^)]+)\)'
def replace_query(match):
sql = match.group(1).strip()
params = match.group(2).strip()
param_list = [p.strip() for p in params.split(',') if p.strip()]
result = f'sqlx::query(\n r#"{sql}"#\n )'
for param in param_list:
result += f'\n .bind({param})'
return result
simple_pattern = r'sqlx::query\s*\(\s*"([^"]*)"[^,]*,([^)]+)\)'
def replace_simple_query(match):
sql = match.group(1).strip()
params = match.group(2).strip()
param_list = [p.strip() for p in params.split(',') if p.strip()]
result = f'sqlx::query("{sql}")'
for param in param_list:
result += f'\n .bind({param})'
return result
content = re.sub(pattern, replace_query, content, flags=re.DOTALL)
content = re.sub(simple_pattern, replace_simple_query, content, flags=re.DOTALL)
return content
def fix_file(file_path):
with open(file_path, 'r') as f:
content = f.read()
original_content = content
fixed_content = fix_sqlx_query(content)
if fixed_content != original_content:
with open(file_path, 'w') as f:
f.write(fixed_content)
print(f"Fixed: {file_path}")
return True
return False
def main():
print("🔧 Properly fixing SQLx query patterns...")
rust_files = []
for crate_dir in ['crates/infrastructure/src/repositories']:
if os.path.exists(crate_dir):
for root, dirs, files in os.walk(crate_dir):
for file in files:
if file.endswith('.rs'):
rust_files.append(os.path.join(root, file))
fixed_count = 0
for file_path in rust_files:
if fix_file(file_path):
fixed_count += 1
print(f"✅ Fixed {fixed_count} files")
if __name__ == "__main__":
main()