# Shisho Policy Rust SDK This is a helper crate for Shisho Cloud workflows to write custom policies. This is the core library to write custom policies. - `decision` includes the structs of `output data`(=`decsion` results). - `gqlgen` includes the functionalities of converting from `geraphql` schema and queries. The original code comes from [`graphql-client/graphql_client_codegen`](https://github.com/graphql-rust/graphql-client/tree/main/graphql_client_codegen) - `schema` includes the string of `datasource` graphql query. The schema is generated by the codegen. ## Required crate This required the helper crate, [`shisho-gql-derive`](https://crates.io/crates/shisho-gql-derive) ## Example usage ``` 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> { input .github .organizations .into_iter() .map(|o: InputGithubOrganizations| decide_on_each_org(o)) .collect() } pub fn decide_on_each_org(o: InputGithubOrganizations) -> Decision { ... } ``` ## Reference - [`graphql-client/graphql_client_codegen`](https://github.com/graphql-rust/graphql-client/tree/main/graphql_client_codegen) - refer the static string of the Shisho Cloud GraphQL schema instead of the argument reference