Skip to main content

shopify_client/admin/cart_transform/
remote.rs

1use crate::common::ServiceContext;
2use crate::{
3    common::{http::execute_graphql, types::APIError},
4    types::cart_transform::{
5        CartTransformCreateInput, CartTransformCreateResp, MetafieldsSetInput, MetafieldsSetResp,
6    },
7};
8
9use serde_json::json;
10
11pub async fn create_cart_transform(
12    ctx: &ServiceContext,
13    input: &CartTransformCreateInput,
14) -> Result<CartTransformCreateResp, APIError> {
15    let query = r#"
16        mutation cartTransformCreate($blockOnFailure: Boolean, $functionHandle: String, $metafields: [MetafieldInput!]) {
17            cartTransformCreate(blockOnFailure: $blockOnFailure, functionHandle: $functionHandle, metafields: $metafields) {
18                cartTransform {
19                    id
20                    functionId
21                    blockOnFailure
22                }
23                userErrors {
24                    field
25                    message
26                    code
27                }
28            }
29        }
30    "#;
31
32    let variables = json!({
33        "blockOnFailure": input.block_on_failure,
34        "functionHandle": input.function_handle,
35        "metafields": input.metafields
36    });
37
38    execute_graphql(ctx, query, variables).await
39}
40
41pub async fn set_metafields(
42    ctx: &ServiceContext,
43    metafields: &[MetafieldsSetInput],
44) -> Result<MetafieldsSetResp, APIError> {
45    let query = r#"
46        mutation metafieldsSet($metafields: [MetafieldsSetInput!]!) {
47            metafieldsSet(metafields: $metafields) {
48                metafields {
49                    key
50                    namespace
51                    value
52                    createdAt
53                    updatedAt
54                    compareDigest
55                }
56                userErrors {
57                    field
58                    message
59                    code
60                }
61            }
62        }
63    "#;
64
65    let variables = json!({
66        "metafields": metafields
67    });
68
69    execute_graphql(ctx, query, variables).await
70}