#convex #generate #parser #type #typegen #file #convex-db

convex-typegen

一个从ConvexDB模式文件生成Rust类型的工具

1个不稳定版本

0.0.1 2023年12月3日

#38#convex

MIT 许可证

22KB
370

Convex TypeGen

ConvexDB类型生成器是一个将convex schema.ts转换为rust类型的工具。我创建这个项目是因为对于后端工作,我更喜欢Rust而不是TypeScript,并且我希望能够在Rust中使用convex模式。

因此,我希望使用这个库的任何人都能发现它很有帮助。我始终愿意添加更多功能,但现在,主要目标是让后端的querymutations具有类型检查。由于复杂性,我还没有为typescript函数提供参数解析,但希望将来能够添加。

安装

cargo install convex-typegen

编辑你的Cargo.toml文件

安装后,你需要将库设置为你的Cargo.toml文件中的构建依赖项。

[build-dependencies]
convex-typegen = "0.0.1"

如有需要,更改到最新版本

创建构建脚本

在你的项目根目录中创建一个`build.rs``文件,内容如下

use convex_typegen::generate_convex_types;

fn main()
{
    println!("cargo:rerun-if-changed=convex/schema.ts");

    let config = convex_typegen::Configuration {
        convex_schema_path: String::from("./convex/schema.ts"),
        code_gen_path: String::from("./src/schema.rs"),
    };

    match generate_convex_types(Some(&config)) {
        Ok(_) => {}
        Err(e) => {
            panic!("Error: {:?}", e);
        }
    }

    println!("Build.rs completed successfully!");
}

这个build.rs文件将在src目录中生成schema.rs文件。你可以将路径更改为任何你想要的。

编辑你的main.rs文件

在生成模式文件后,你需要让你的main.rs文件了解它。将以下行添加到你的main.rs文件中

mod schema;

现在你准备好了!你的convex querymutations将在Rust中进行类型检查!

示例查询

client.query(schema::Users::FindAll.to_string(), maplit::btreemap! {}).await;

待办事项

  • [] 支持函数参数解析/类型检查(可能)

依赖关系

~6–15MB
~186K SLoC