#graphql #policy #cloud #policies #sdk #shisho #graphql-schema

test-shisho-policy-sdk

这是 Shisho 云策略的 SDK,用于使用 Rust 编写自定义策略。

15 个版本

0.1.16 2022 年 11 月 9 日
0.1.14 2022 年 11 月 7 日

#495 in HTTP 服务器

每月 46 次下载
test-shisho-gql-derive 中使用

Apache-2.0

180KB
5K SLoC

Shisho 策略 Rust SDK

这是一个辅助 Crates,用于 Shisho 云工作流程以编写自定义策略。

这是编写自定义策略的核心库。

  • decision 包含了 output data(=decsion 结果) 的结构体。
  • gqlgen 包含了从 geraphql 架构和查询转换的功能。原始代码来自 graphql-client/graphql_client_codegen
  • schema 包含了 datasource graphql 查询的字符串。该架构由代码生成器生成。

所需 Crates

这需要辅助 Crates,shisho-gql-derive

示例用法

use shisho_gql_derive::*;
pub use shisho_policy_sdk::decision::data_entry::*;
pub use shisho_policy_sdk::decision::github::organization::org_owners::*;
pub use shisho_policy_sdk::decision::*;

use self::input::InputGithubOrganizations;

#[allow(dead_code)]
#[derive(ShishoGraphQLQuery)]
#[shisho_graphql(
    query_path = "src/policies/organization/org_owners/query.graphql",
    response_derives = "Debug, PartialEq"
)]
pub struct Input;

pub fn decisions(input: input::InputData) -> Vec<Decision<OrgOwnersEntryData>> {
    input
        .github
        .organizations
        .into_iter()
        .map(|o: InputGithubOrganizations| decide_on_each_org(o))
        .collect()
}

pub fn decide_on_each_org(o: InputGithubOrganizations) -> Decision<OrgOwnersEntryData> {
    ...
}

参考

依赖项

~1.8–2.7MB
~58K SLoC