#query #experience #type-safe #postg-rest #postgrest #builder-esque #postgrest-client

postgrest-query

A type-safe query builder-esque experience via PostgREST

1 unstable release

0.1.0 Dec 27, 2023

#19 in #experience

MIT license

5KB
89 lines

postgrest-query

A type-safe query builder-esque experience via PostgREST

Install

cargo add postgrest-query

Usage

use postgrest_query::PostgrestClient;

const URL: &str = "https://org-postgrest-query-demo-inst.data-1.use1.tembo.io/restapi/v1";

#[derive(serde::Serialize, serde::Deserialize)]
struct UserModel {
    id: i32,
    name: String,
    password: String,
}

#[tokio::main]
async fn main() -> Result<(), std::error::Error> {
    let db = PostgrestClient::new(URL);

    let user_query = db.from("users").find_many::<UserModel>().exec().await;
}

TODO

  • Simple Rust -> PostgREST -> Postgres leveraging serde and resembling the Prisma query builder
  • Allow providing custom schemas to enable even better type safety
  • Potentially let consumers provide their own fetcher (defaults to reqwest) for now
  • Compile time query checks (similar to sqlx)
  • Explore potential ports of this to other languages (TypeScript, Python, Go, etc.)

Dependencies

~3–15MB
~225K SLoC