37 lines
1.4 KiB
Rust
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();
|
|
}
|
|
}
|
|
}
|