5个版本
0.2.1 | 2022年6月1日 |
---|---|
0.2.0 | 2022年6月1日 |
0.1.4 | 2022年4月15日 |
0.1.3 | 2022年4月11日 |
0.1.0 | 2022年4月5日 |
#12 in #django
在 3 个crate中使用 (通过 django-query)
67KB
1.5K SLoC
django-query
一组用于创建Django风格模拟端点的工具。基本用法是对你想要模拟拥有数据库的类型进行注释,派生必要的特性,然后创建一个 Endpoint
来提供可排序、可过滤的数据库。
示例用法
#[derive(Filterable, IntoRow, Sortable)]
struct Foo {
#[django(sort, op(lt, gt))]
a: i32,
#[django(sort, op(icontains, iexact))]
b: String,
}
#[tokio::test]
fn simple_test() {
let server = MockServer::start().await;
// create a Vec of struct Foo here, and optionally
// wrap it in an Arc.
// Now serve our mock database with wiremock
Mock::given(matchers::method("GET"))
.respond_with(Endpoint::new(foo_table, Some(&server.uri())));
// And now we can make requests from our code like
reqwest::get(&format!("{}?limit=5&offset=5&b__icontains=apple&ordering=-a"))
.await
.expect("error getting response")
.json()
.await
.expect("error parsing response");
// which will perform
// - pagination (5 responses, offset by 5)
// - filtering (only array members whose b member contains apple,
// case insensitively)
// - sorting (the results will be in decreasing order of the a
// member)
}
它集成了 persian-rug
和 clone-replace
,以提供可变集合的相互关联的对象。
许可证
此代码可在Apache-2.0或MIT许可证下使用。
依赖
~1.5MB
~35K SLoC