1use std::sync::Arc;
2
3pub mod common;
4pub mod services;
5pub mod types;
6pub mod webhooks;
7
8pub struct ShopifyClient {
9 pub order: services::order::Order,
10 pub subscription: services::subscription::Subscription,
11 pub app_installation: services::app_installation::AppInstallation,
12 pub discount: services::discount::Discount,
13 pub cart_transform: services::cart_transform::CartTransform,
14 pub shopify_functions: services::shopify_functions::ShopifyFunctions,
15}
16
17impl ShopifyClient {
18 pub fn new(shop_url: String, access_token: String, api_version: Option<String>) -> Self {
19 let api_version = api_version.unwrap_or("2026-01".to_string());
20 let shop_url_arc = Arc::new(shop_url);
21 let api_version_arc = Arc::new(api_version);
22 let access_token_arc = Arc::new(access_token);
23
24 ShopifyClient {
25 order: services::order::Order::new(
26 Arc::clone(&shop_url_arc),
27 Arc::clone(&api_version_arc),
28 Arc::clone(&access_token_arc),
29 ),
30 subscription: services::subscription::Subscription::new(
31 Arc::clone(&shop_url_arc),
32 Arc::clone(&api_version_arc),
33 Arc::clone(&access_token_arc),
34 ),
35 app_installation: services::app_installation::AppInstallation::new(
36 Arc::clone(&shop_url_arc),
37 Arc::clone(&api_version_arc),
38 Arc::clone(&access_token_arc),
39 ),
40 discount: services::discount::Discount::new(
41 Arc::clone(&shop_url_arc),
42 Arc::clone(&api_version_arc),
43 Arc::clone(&access_token_arc),
44 ),
45 cart_transform: services::cart_transform::CartTransform::new(
46 Arc::clone(&shop_url_arc),
47 Arc::clone(&api_version_arc),
48 Arc::clone(&access_token_arc),
49 ),
50 shopify_functions: services::shopify_functions::ShopifyFunctions::new(
51 Arc::clone(&shop_url_arc),
52 Arc::clone(&api_version_arc),
53 Arc::clone(&access_token_arc),
54 ),
55 }
56 }
57}