#![cfg(any(feature = "postgres-sync", feature = "tokio-postgres"))]
use crate::common::schema::postgres::*;
use drizzle::core::expr::*;
use drizzle::postgres::prelude::*;
#[drizzle::test]
fn query_by_name_column(db: &mut TestDb<SimpleSchema>) {
let SimpleSchema { simple } = schema;
let stmt = db.insert(simple).values([
InsertSimple::new("Alice"),
InsertSimple::new("Bob"),
InsertSimple::new("Charlie"),
]);
stmt.execute();
let stmt = db
.select((simple.id, simple.name))
.from(simple)
.r#where(eq(simple.name, "Bob"));
let results: Vec<SelectSimple> = stmt.all();
assert_eq!(results.len(), 1);
assert_eq!(results[0].name, "Bob");
}
#[cfg(feature = "uuid")]
#[drizzle::test]
fn query_by_nullable_column(db: &mut TestDb<ComplexSchema>) {
let ComplexSchema { complex, .. } = schema;
let stmt = db.insert(complex).values([
InsertComplex::new("With Email", true, Role::User).with_email("test@example.com")
]);
stmt.execute();
let stmt = db
.insert(complex)
.values([InsertComplex::new("No Email", true, Role::User)]);
stmt.execute();
#[derive(Debug, PostgresFromRow)]
struct Result {
name: String,
}
let stmt = db
.select(())
.from(complex)
.r#where(eq(complex.email, "test@example.com"));
let results: Vec<Result> = stmt.all();
assert_eq!(results.len(), 1);
assert_eq!(results[0].name, "With Email");
}
#[drizzle::test]
fn query_large_dataset(db: &mut TestDb<SimpleSchema>) {
let SimpleSchema { simple } = schema;
let names: Vec<String> = (0..50).map(|i| format!("User_{:03}", i)).collect();
let rows: Vec<_> = names
.iter()
.map(|n| InsertSimple::new(n.as_str()))
.collect();
let stmt = db.insert(simple).values(rows);
stmt.execute();
let stmt = db
.select((simple.id, simple.name))
.from(simple)
.r#where(eq(simple.name, "User_025"));
let results: Vec<SelectSimple> = stmt.all();
assert_eq!(results.len(), 1);
assert_eq!(results[0].name, "User_025");
}