1#[macro_export]
6macro_rules! impl_executable_builder {
7 (
8 $builder:ty,
9 $service:ty,
10 $request:ty,
11 $response:ty,
12 $method:ident
13 ) => {
14 impl openlark_core::trait_system::ExecutableBuilder<$service, $request, $response>
15 for $builder
16 {
17 fn build(self) -> $request {
18 self.build()
19 }
20
21 async fn execute(self, service: &$service) -> openlark_core::SDKResult<$response> {
22 let request = self.build();
23 service.$method(&request, None).await
24 }
25
26 async fn execute_with_options(
27 self,
28 service: &$service,
29 option: openlark_core::req_option::RequestOption,
30 ) -> openlark_core::SDKResult<$response> {
31 let request = self.build();
32 service.$method(&request, Some(option)).await
33 }
34 }
35 };
36}
37
38#[macro_export]
40macro_rules! impl_executable_builder_owned {
41 (
42 $builder:ty,
43 $service:ty,
44 $request:ty,
45 $response:ty,
46 $method:ident
47 ) => {
48 impl openlark_core::trait_system::ExecutableBuilder<$service, $request, $response>
49 for $builder
50 {
51 fn build(self) -> $request {
52 self.build()
53 }
54
55 async fn execute(self, service: &$service) -> openlark_core::SDKResult<$response> {
56 let request = self.build();
57 service.$method(request, None).await
58 }
59
60 async fn execute_with_options(
61 self,
62 service: &$service,
63 option: openlark_core::req_option::RequestOption,
64 ) -> openlark_core::SDKResult<$response> {
65 let request = self.build();
66 service.$method(request, Some(option)).await
67 }
68 }
69 };
70}
71