rawsql 0.2.0

A rust library for reusing SQL
Documentation
  • Coverage
  • 100%
    4 out of 4 items documented1 out of 4 items with examples
  • Size
  • Source code size: 39.52 kB This is the summed size of all the files inside the crates.io package for this release.
  • Documentation size: 1.51 MB This is the summed size of all files generated by rustdoc for all configured targets
  • Ø build duration
  • this release: 17s Average build duration of successful builds.
  • all releases: 12s Average build duration of successful builds in releases after 2024-10-23.
  • Links
  • Documentation
  • manute/rawsql
    15 2 0
  • crates.io
  • Dependencies
  • Versions
  • Owners
  • manute

rawsql

A rust library for using and reusing SQL.

Latest Version

is heavily influenced by yesql (many thanks @krisajenkins)

DOC

You can integrate rawsql into your project through the releases on crates.io:

# Cargo.toml
[dependencies]
rawsql = "0.1.1"

Overview

You need to write SQL and you need to reuse it. You don't want to duplicate the queries all over the code. This lib is for you.

This lib does not execute any sql in the DB.

Usage

The basic idea is to separate the sql part from the code and put it into its own sql files. With this approach, you gain sql powers and the ability to write sql only once that runs on your DB (your dba could modify these files too)

The sql file needs to be with this format :

-- name: insert-person
INSERT INTO "person" (name, data) VALUES ($1, $2);

-- name: select-persons
SELECT id, name, data FROM person;

comment with the **-- name: ** , it will be the key value for getting each query.

the ";" will be needed at the end of the query.


extern crate rawsql;

use rawsql::Loader;


fn main() {

    let queries = Loader::get_queries_from("examples/postgre.sql").unwrap().queries;

    //Insert query
    let qinsert = queries.get("insert-person").unwrap();

    println!("{}", qinsert);

    //Select query
    let qselect = queries.get("select-persons").unwrap();
    println!("{}", qselect);

}

See the full example here

License

Licensed under: - MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)

Why not execute SQL this lib?

In rust there is not yet a general driver like JDBC or go's database/sql so I decide to abstract first the parser of sql files to use directly with the libs already exists for each DB.