19个版本 (6个破坏性更新)
0.7.1 | 2023年11月17日 |
---|---|
0.6.1 | 2023年7月28日 |
0.3.4 | 2023年3月23日 |
0.1.0 | 2022年7月9日 |
#141 在 数据库接口
3,578 每月下载量
用于 13 个Crate (8个直接)
4MB
136K SLoC
Trustfall — 查询(几乎)任何事物的引擎
Trustfall是一个查询引擎,可用于查询任何类型的数据源,从API和数据库到磁盘上的任何类型的文件——甚至AI模型。
在您的浏览器中尝试Trustfall
Trustfall游乐场支持运行针对以下公共数据源的查询
- HackerNews REST API: https://play.predr.ag/hackernews
- 顶级Rust crates的rustdoc JSON: https://play.predr.ag/rustdoc
例如,这个链接显示了HackerNews查询的结果:“哪些GitHub或Twitter用户正在评论关于OpenAI的故事?”
在游乐场中,Trustfall配置为作为WASM在客户端运行,在浏览器中执行查询处理的各个方面(解析、编译和执行)。虽然这个演示突出了Trustfall嵌入到目标应用程序中的能力,但当然也可以在更传统的客户端-服务器环境中使用。
10分钟技术讲座 + 演示
Trustfall被介绍在了HYTRADBOI 2022会议上的《如何查询(几乎)一切》演讲中。[链接](https://www.hytradboi.com/2022/how-to-query-almost-everything) “How to Query (Almost) Everything” talk talk at the HYTRADBOI 2022 conference.
演讲中演示了跨API查询的执行:“在HackerNews首页上,哪些GitHub Actions被用于得分大于等于10分的项目?”
该演示在HackerNews和GitHub API以及YAML格式的GitHub仓库工作流程文件上执行以下查询
{
HackerNewsTop(max: 200) {
... on HackerNewsStory {
hn_score: score @filter(op: ">=", value: ["$min_score"]) @output
link {
... on GitHubRepository {
repo_url: url @output
workflows {
workflow: name @output
workflow_path: path @output
jobs {
job: name @output
step {
... on GitHubActionsImportedStep {
step: name @output
action: uses @output
}
}
}
}
}
}
}
}
}
运行此演示的说明以及源代码可在此目录中找到:demo-hytradboi
:[链接](https://github.com/obi1kenobi/trustfall/blob/61142441cfb7dced1664e42f1d98bf612e554b1f/trustfall/demo-hytradboi) link。
使用Trustfall查询现实世界数据的示例
- [HackerNews API](https://github.com/obi1kenobi/trustfall/blob/61142441cfb7dced1664e42f1d98bf612e554b1f/trustfall/trustfall/examples/hackernews/),包括查询语言概述和查询REST API的示例。
- [RSS/Atom feeds](https://github.com/obi1kenobi/trustfall/blob/61142441cfb7dced1664e42f1d98bf612e554b1f/trustfall/trustfall/examples/feeds/),展示如何查询RSS/Atom等结构化数据。
- [机场天气预报数据(METAR)](https://github.com/obi1kenobi/trustfall/blob/61142441cfb7dced1664e42f1d98bf612e554b1f/trustfall/trustfall/examples/weather),展示如何查询航空天气预报中的CSV数据。
Trustfall还驱动了语义版本控制检查器[cargo-semver-checks
](https://crates.org.cn/crates/cargo-semver-checks)。更多关于Trustfall在该用例中扮演的角色详情,请参阅[这篇博客](https://predr.ag/blog/speeding-up-rust-semver-checking-by-over-2000x/)。
在新的数据源上使用Trustfall
通过实现[BasicAdapter
trait](https://docs.rs/trustfall_core/latest/trustfall_core/interpreter/basic_adapter/trait.BasicAdapter.html)是连接新数据源的最简单方式。
Python绑定可用,并在引擎每次更改时自动构建;最新版本可在此[下载](https://github.com/obi1kenobi/trustfall/releases)。Python入门指南即将推出([跟踪问题](https://github.com/obi1kenobi/trustfall/issues/16));同时,Python绑定的[测试套件](https://github.com/obi1kenobi/trustfall/blob/61142441cfb7dced1664e42f1d98bf612e554b1f/trustfall/pytrustfall/trustfall/tests/test_execution.py)是最佳资源。
目录注册
trustfall
是一个门面crate。这是使用Trustfall的首选方式。trustfall_core
包含查询引擎内部结构。trustfall_derive
定义了简化数据源插入的宏。pytrustfall
包含Trustfall的Python绑定。trustfall_wasm
是Trustfall的WASM构建。trustfall_filetests_macros
是一个用于生成由文件定义的测试用例的过程宏:它们确保当给定一个文件指定的输入时,被测试的函数产生的输出与另一个文件的内容等效。experiments
包含各种实验项目,如[Trustfall网络沙盒](https://play.predr.ag/)。
版权所有2022-至今 Predrag Gruevski。
本文件基于Apache许可证第2.0版(“许可证”);除非适用法律要求或书面同意,否则不得使用此文件,除非遵守许可证。您可以在http://www.apache.org/licenses/LICENSE2.0获取许可证副本。
除非适用法律要求或书面同意,否则在许可证下分发的软件按“原样”基础分发,不提供任何形式(明示或暗示)的保证或条件。有关许可证下权限和限制的特定语言,请参阅许可证。
当前日期由仓库中最新的提交时间戳确定。通过访问、贡献代码、评论或问题到此仓库,您同意您的所有贡献可以在原作者和/或此项目的未来维护者选择的任何条款下使用、修改、复制和/或重新分发。
依赖项
~6-8MB
~150K SLoC