33个版本 (18个破坏性版本)
0.20.0 | 2024年6月13日 |
---|---|
0.17.0 | 2024年4月5日 |
0.16.0 | 2024年3月27日 |
0.15.3 | 2023年9月9日 |
0.4.2 | 2022年3月31日 |
#342 in 数据库接口
每月下载 208 次
在 2 个crates中使用 (通过 sqlx-type-macro)
170KB
4K SLoC
sql-type
SQL语句类型化
此crate提供了一种处理SQL模式定义的功能,然后使用此定义来为SQL语句的参数和返回值进行类型化。
目前主要关注MariaDB/Mysql。
示例代码
use sql_type::{schema::parse_schemas, type_statement, TypeOptions,
SQLDialect, SQLArguments, StatementType};
let schemas = "
CREATE TABLE `events` (
`id` bigint(20) NOT NULL,
`user` int(11) NOT NULL,
`message` text NOT NULL
);";
let mut issues = Vec::new();
// Compute terse representation of the schemas
let schemas = parse_schemas(schemas,
&mut issues,
&TypeOptions::new().dialect(SQLDialect::MariaDB));
assert!(issues.is_empty());
let sql = "SELECT `id`, `user`, `message` FROM `events` WHERE `id` = ?";
let stmt = type_statement(&schemas, sql, &mut issues,
&TypeOptions::new().dialect(SQLDialect::MariaDB).arguments(SQLArguments::QuestionMark));
assert!(issues.is_empty());
let stmt = match stmt {
StatementType::Select{columns, arguments} => {
assert_eq!(columns.len(), 3);
assert_eq!(arguments.len(), 1);
}
_ => panic!("Expected select statement")
};
依赖项
~330KB