shopify_client/admin/cart_transform/
remote.rs1use 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}