use inline_postgres as pg; use pg::prelude::*; use inline_postgres::key::Key; use inline_postgres::Table; #[derive(Debug, Table)] struct Person { id: Key, first_name: String, last_name: String, } fn main() -> Result<(), pg::Error> { let mut client = pg::Client::connect("host=localhost, user=postgres", pg::NoTls)?; let client = &mut client; client.exec(stmt! {DROP TABLE PERSON}).ok(); client.exec(stmt! { CREATE TABLE PERSON ( ID UUID PRIMARY KEY, FIRST_NAME VARCHAR(100), LAST_NAME VARCHAR(100) ) })?; let ironman = Person::new("Tony", "Stark"); let spiderman = Person::new("Peter", "Parker"); let skater = Person::new("Tony", "Hawk"); client.bulk_insert(&[ironman, spiderman, skater])?; let last_names = client.fetch(sql! { SELECT DISTINCT [last_name: String] FROM PERSON })?; println!("{last_names:?}"); // [record { last_name: "Stark" }, record { last_name: "Parker" }, record { last_name: "Hawk" }] let people: Vec = client.fetch_table(iff! { FIRST_NAME = "Tony" })?; println!("{people:#?}"); // [ // Person { // id: 01GVP1VCCX1RSYWJ42092VHXK3, // first_name: "Tony", // last_name: "Stark", // }, // Person { // id: 01GVP1VCCXS85QVVMD0Y0VEJBD, // first_name: "Tony", // last_name: "Hawk", // }, // ] Ok(()) }