Skip to content
forked from prisma/quaint

SQL Query AST and Visitor for Rust

License

Notifications You must be signed in to change notification settings

cryslith/quaint

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Quaint

crates.io docs.rs Build status Discord

Quaint is an abstraction over certain SQL databases. It provides:

  • An AST for building dynamic SQL queries.
  • Visitors for different databases to generate SQL strings.
  • Connectors to abstract over results and querying.
  • Pooling with mobc
  • Async/await and Futures 0.3

Documentation

Feature flags

  • full: All connectors and a pooled Quaint manager
  • full-postgresql: Pooled support for PostgreSQL
  • full-mysql: Pooled support for MySQL
  • full-sqlite: Pooled support for SQLite
  • single: All connectors, but no pooling
  • single-postgresql: Single connection support for PostgreSQL
  • single-mysql: Single connection support for MySQL
  • single-sqlite: Single connection support for SQLite

Goals:

  • Query generation when the database and conditions are not known beforehand.
  • Parameterized queries and SQL injection protection.
  • A modular design, a separate AST and separate visitors and connectors.

Non-goals:

  • Database-level type-safety in query building or being an ORM.

For type-safe database abstraction, Diesel is an excellent choice.

Testing:

  • See .envrc for connection params. Override variables if different. MySQL and PostgreSQL needs to be running for tests to succeed.

Then:

> cargo test

Query debug

The queries can be logged by setting the LOG_QUERIES environment variable to any value. They'll be logged at the INFO level and are visible when having a logger in scope. If using Tracing, compiling Quaint with the tracing-log feature flag will parameterize the logged queries into a more suitable format for Tracing.

About

SQL Query AST and Visitor for Rust

Resources

License

Code of conduct

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Rust 99.5%
  • Shell 0.5%