https://github.com/andrewbaxter/rs-sqlite-symbology
Rust Sqlite query data model and query string builder
https://github.com/andrewbaxter/rs-sqlite-symbology
orm rust sql sqlite
Last synced: 11 months ago
JSON representation
Rust Sqlite query data model and query string builder
- Host: GitHub
- URL: https://github.com/andrewbaxter/rs-sqlite-symbology
- Owner: andrewbaxter
- License: isc
- Created: 2022-10-07T13:04:17.000Z (over 3 years ago)
- Default Branch: master
- Last Pushed: 2022-10-30T12:12:02.000Z (over 3 years ago)
- Last Synced: 2025-01-16T22:20:15.204Z (over 1 year ago)
- Topics: orm, rust, sql, sqlite
- Language: Rust
- Homepage:
- Size: 5.86 KB
- Stars: 0
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: readme.md
- License: license.txt
Awesome Lists containing this project
README
A Rust data model for Sqlite queries that has methods for building query strings and associated parameter lists.
Typically you'd make an instance of `Select` `Insert` or `Update`, then use it like
```
let mut params: Vec> = vec![];
let query_str = Select{...}.build_str(params.as_mut());
let mut stmt = conn.prepare(&query_text).unwrap();
let mut rows = stmt.query(params_from_iter(params.iter())).unwrap();
...
```
Expressions are used in various places and are instantiated like
```
Expr::new(ParamExpr::V(
bincode::serialize(&ch_id.owner).unwrap().into(),
))
```
Benefits over hand written SQL:
- You can conditinally add/remove/modify clauses, compose query parts using standard language tools (functions) - useful for dynamic queries
- You can use variables for fields/tables/etc. guaranteeing consistency and preventing typos at compile time
- Automatic formatting using rustfmt
Benefits over ORMs:
- Not a framework
Benefits over other SQL generators:
- No macros, so automatic formatting using rustfmt
- SQLite specific, which (theoretically) means better language coverage
Ideally this would have 1-1 relation with the graphs on the SQLite website, sans maybe the formatting-only paths (like including/omitting "as").