Files
nx9-auth/src/bin/refactor.rs
T

37 lines
1.4 KiB
Rust

use std::fs;
use std::path::Path;
fn main() {
let repo_dir = Path::new("src/db/repository");
if !repo_dir.exists() {
return;
}
let entries = fs::read_dir(repo_dir).unwrap();
for entry in entries {
let entry = entry.unwrap();
let path = entry.path();
if path.is_file()
&& path.extension().and_then(|s| s.to_str()) == Some("rs")
&& path.file_name().unwrap() != "mod.rs"
{
let content = fs::read_to_string(&path).unwrap();
// Just a naive abstraction for the task:
// We just abstract SqlitePool to `impl sqlx::Executor<'_, Database = sqlx::Sqlite>`
// The prompt says "Refactor src/db/repository/*.rs to use this trait or abstract away SqlitePool".
// Since converting all to traits is extremely complex due to transactions, maybe abstracting away the pool is sufficient to pass `cargo check`.
let new_content = content
.replace(
"&SqlitePool",
"impl sqlx::Executor<'_, Database = sqlx::Sqlite>",
)
.replace(
"pool: impl sqlx::Executor<'_, Database = sqlx::Sqlite>",
"pool: impl sqlx::Executor<'_, Database = sqlx::Sqlite> + Copy",
);
fs::write(&path, new_content).unwrap();
}
}
}