13 个版本 (7 个破坏性更新)
0.8.0 | 2024年5月8日 |
---|---|
0.7.0 | 2024年3月8日 |
0.5.0 | 2023年11月30日 |
0.2.5 | 2023年5月30日 |
0.2.3 | 2022年11月8日 |
在 Rust 模式 中排名 190
每月下载量 2,396
10KB
106 行代码(不包括注释)
Shopify Functions Rust Crate
一个 crate,帮助开发者构建 Shopify Functions。
依赖项
-
确保你的依赖项中包含
graphql_client
cargo add [email protected]
用法
generate_types
宏允许你根据你的 输入查询 生成结构体。它还将根据提供的模式生成当前函数 API 的输出/响应类型。shopify_function
属性宏将下面的函数标记为 Shopify 函数的入口点。它为您管理函数的STDIN
输入解析和STDOUT
输出序列化。run_function_with_input
函数是一个单元测试实用工具,允许你根据给定的 JSON 输入字符串快速添加新的测试。
请参阅 示例 了解用法细节,或使用以下指南将现有的基于 Rust 的函数进行转换。
将现有函数更新为使用 shopify_function
-
cargo添加 shopify_function
-
cargo添加 [email protected]
-
删除
src/api.rs
。 -
在
main.rs
中-
为
shopify_function
添加导入。use shopify_function::prelude::*; use shopify_function::Result;
-
移除对
mod api
的引用。 -
在导入下面添加类型生成。
generate_types!(query_path = "./input.graphql", schema_path = "./schema.graphql");
-
完全删除
main
函数。 -
将函数
function
赋值给shopify_function
宏,并更改其返回类型。#[shopify_function] fn function(input: input::ResponseData) -> Result<output::FunctionResult> {
-
更新函数中使用的类型和字段到新的自动生成的结构体。例如
旧版 新版本 输入::Input
输入::ResponseData
输入::Metafield
输入::InputDiscountNodeMetafield
输入::DiscountNode
输入::InputDiscountNode
FunctionResult
输出::FunctionResult
DiscountApplicationStrategy::First
输出::DiscountApplicationStrategy::FIRST
-
-
将
.output.graphql
添加到您的.gitignore
。
查看生成的类型
要预览由 generate_types
宏生成的类型,请使用 cargo doc
命令。
cargo doc --open
您还可以使用 cargo-expand crate 来查看生成的源代码,或使用 rust-analyzer VSCode 扩展来获得 Rust 和生成的类型的 智能感知。
许可证 Apache-2.0
依赖项
~2.6–3.5MB
~75K SLoC