2 releases

Uses old Rust 2015

0.1.1 Apr 21, 2022
0.1.0 Nov 13, 2015

#625 in Database interfaces

Download history 1106/week @ 2024-06-18 1200/week @ 2024-06-25 1309/week @ 2024-07-02 1204/week @ 2024-07-09 816/week @ 2024-07-16 1450/week @ 2024-07-23 615/week @ 2024-07-30 665/week @ 2024-08-06 666/week @ 2024-08-13 804/week @ 2024-08-20 911/week @ 2024-08-27 953/week @ 2024-09-03 2124/week @ 2024-09-10 1743/week @ 2024-09-17 1380/week @ 2024-09-24 1551/week @ 2024-10-01

7,015 downloads per month

MIT license

11KB
133 lines

rawsql

A rust library for using and reusing SQL.

Build Status 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

Copyright © 2015 Manuel Alonso

MIT License

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.

No runtime deps