Browse Source

Creating a repository is harder than you think

master
Julio Biason 4 years ago
parent
commit
13e7aba754
  1. 36
      sqlxtest/src/main.rs

36
sqlxtest/src/main.rs

@ -1,7 +1,37 @@
use sqlx::sqlite::SqliteConnectOptions; use sqlx::sqlite::SqliteConnectOptions;
use sqlx::sqlite::SqlitePoolOptions; use sqlx::sqlite::SqlitePoolOptions;
use sqlx::Pool;
use std::env; use std::env;
struct Label {
id: u32,
description: String,
}
struct Repository<T>
where
T: sqlx::Database,
{
pool: Pool<T>,
}
impl<T> Repository<T>
where
T: sqlx::Database,
{
fn new(pool: Pool<T>) -> Self {
Self { pool }
}
async fn save(&mut self, label: &Label) -> Result<(), sqlx::Error> {
sqlx::query(r#"INSERT INTO testing (label) VALUES (?)"#)
.bind(label.description)
.execute(self.pool)
.await?;
Ok(())
}
}
#[tokio::main] #[tokio::main]
async fn main() -> Result<(), sqlx::Error> { async fn main() -> Result<(), sqlx::Error> {
println!("Open database"); println!("Open database");
@ -14,15 +44,13 @@ async fn main() -> Result<(), sqlx::Error> {
.await?; .await?;
sqlx::migrate!("db/migrations").run(&pool).await?; sqlx::migrate!("db/migrations").run(&pool).await?;
let repo = Repository::new(pool);
let command = env::args().nth(1).unwrap(); let command = env::args().nth(1).unwrap();
println!("Command: \"{}\"", command); println!("Command: \"{}\"", command);
if command == "add" { if command == "add" {
let value = env::args().nth(2).unwrap(); let value = env::args().nth(2).unwrap();
println!("Should add \"{}\"", value); println!("Should add \"{}\"", value);
sqlx::query(r#"INSERT INTO testing (label) VALUES (?)"#)
.bind(value)
.execute(&pool)
.await?;
} else if command == "remove" { } else if command == "remove" {
let value = env::args().nth(2).unwrap(); let value = env::args().nth(2).unwrap();
println!("Should remove \"{}\"", value); println!("Should remove \"{}\"", value);

Loading…
Cancel
Save