Easily Deserialize Postgres rows.
Switch branches/tags
Nothing to show
Clone or download
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
src feat: support map types Dec 3, 2018
.gitignore Initial commit Nov 21, 2018
.travis.yml fix postgres create database script in ci Nov 22, 2018
Cargo.toml Bump version to 0.1.2 Dec 3, 2018
LICENSE-APACHE Added Licenses Nov 21, 2018
LICENSE-MIT Added Licenses Nov 21, 2018
README.md Initial commit Nov 21, 2018

README.md

Serde Postgres

Build status Crate Lines Of Code Documentation

Easily deserialize rows from postgres into arbitrary structs. (Only deserialization is supported).

extern crate serde;
extern crate serde_derive;
extern crate serde_postgres;
extern crate postgres;

use std::error::Error;

use serde_derive::Deserialize;
use postgres::{Connection, TlsMode};

#[derive(Clone, Debug, Deserialize)]
struct Person {
    name: String,
    age: i32,
}

fn main() -> Result<(), Box<Error>> {
    let connection = Connection::connect("postgres://postgres@localhost:5432", TlsMode::None)?;

    connection.execute("CREATE TABLE IF NOT EXISTS Person (
        name VARCHAR NOT NULL,
        age INT NOT NULL
    )", &[])?;

    connection.execute("INSERT INTO Person (name, age) VALUES ($1, $2)",
    &[&"Jane", &23])?;

    connection.execute("INSERT INTO Person (name, age) VALUES ($1, $2)",
    &[&"Alice", &32])?;
    
    let rows = connection.query("SELECT name, age FROM Person", &[])?;

    let people: Vec<Person> = serde_postgres::from_rows(&rows)?;

    for person in people {
        println!("{:?}", person);
    }

    Ok(())
}