aws_sdk_appsync/operation/create_resolver/
_create_resolver_input.rs

1// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
2#[allow(missing_docs)] // documentation missing in model
3#[non_exhaustive]
4#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::fmt::Debug)]
5pub struct CreateResolverInput {
6    /// <p>The ID for the GraphQL API for which the resolver is being created.</p>
7    pub api_id: ::std::option::Option<::std::string::String>,
8    /// <p>The name of the <code>Type</code>.</p>
9    pub type_name: ::std::option::Option<::std::string::String>,
10    /// <p>The name of the field to attach the resolver to.</p>
11    pub field_name: ::std::option::Option<::std::string::String>,
12    /// <p>The name of the data source for which the resolver is being created.</p>
13    pub data_source_name: ::std::option::Option<::std::string::String>,
14    /// <p>The mapping template to use for requests.</p>
15    /// <p>A resolver uses a request mapping template to convert a GraphQL expression into a format that a data source can understand. Mapping templates are written in Apache Velocity Template Language (VTL).</p>
16    /// <p>VTL request mapping templates are optional when using an Lambda data source. For all other data sources, VTL request and response mapping templates are required.</p>
17    pub request_mapping_template: ::std::option::Option<::std::string::String>,
18    /// <p>The mapping template to use for responses from the data source.</p>
19    pub response_mapping_template: ::std::option::Option<::std::string::String>,
20    /// <p>The resolver type.</p>
21    /// <ul>
22    /// <li>
23    /// <p><b>UNIT</b>: A UNIT resolver type. A UNIT resolver is the default resolver type. You can use a UNIT resolver to run a GraphQL query against a single data source.</p></li>
24    /// <li>
25    /// <p><b>PIPELINE</b>: A PIPELINE resolver type. You can use a PIPELINE resolver to invoke a series of <code>Function</code> objects in a serial manner. You can use a pipeline resolver to run a GraphQL query against multiple data sources.</p></li>
26    /// </ul>
27    pub kind: ::std::option::Option<crate::types::ResolverKind>,
28    /// <p>The <code>PipelineConfig</code>.</p>
29    pub pipeline_config: ::std::option::Option<crate::types::PipelineConfig>,
30    /// <p>The <code>SyncConfig</code> for a resolver attached to a versioned data source.</p>
31    pub sync_config: ::std::option::Option<crate::types::SyncConfig>,
32    /// <p>The caching configuration for the resolver.</p>
33    pub caching_config: ::std::option::Option<crate::types::CachingConfig>,
34    /// <p>The maximum batching size for a resolver.</p>
35    pub max_batch_size: ::std::option::Option<i32>,
36    /// <p>Describes a runtime used by an Amazon Web Services AppSync pipeline resolver or Amazon Web Services AppSync function. Specifies the name and version of the runtime to use. Note that if a runtime is specified, code must also be specified.</p>
37    pub runtime: ::std::option::Option<crate::types::AppSyncRuntime>,
38    /// <p>The <code>resolver</code> code that contains the request and response functions. When code is used, the <code>runtime</code> is required. The <code>runtime</code> value must be <code>APPSYNC_JS</code>.</p>
39    pub code: ::std::option::Option<::std::string::String>,
40    /// <p>Enables or disables enhanced resolver metrics for specified resolvers. Note that <code>metricsConfig</code> won't be used unless the <code>resolverLevelMetricsBehavior</code> value is set to <code>PER_RESOLVER_METRICS</code>. If the <code>resolverLevelMetricsBehavior</code> is set to <code>FULL_REQUEST_RESOLVER_METRICS</code> instead, <code>metricsConfig</code> will be ignored. However, you can still set its value.</p>
41    /// <p><code>metricsConfig</code> can be <code>ENABLED</code> or <code>DISABLED</code>.</p>
42    pub metrics_config: ::std::option::Option<crate::types::ResolverLevelMetricsConfig>,
43}
44impl CreateResolverInput {
45    /// <p>The ID for the GraphQL API for which the resolver is being created.</p>
46    pub fn api_id(&self) -> ::std::option::Option<&str> {
47        self.api_id.as_deref()
48    }
49    /// <p>The name of the <code>Type</code>.</p>
50    pub fn type_name(&self) -> ::std::option::Option<&str> {
51        self.type_name.as_deref()
52    }
53    /// <p>The name of the field to attach the resolver to.</p>
54    pub fn field_name(&self) -> ::std::option::Option<&str> {
55        self.field_name.as_deref()
56    }
57    /// <p>The name of the data source for which the resolver is being created.</p>
58    pub fn data_source_name(&self) -> ::std::option::Option<&str> {
59        self.data_source_name.as_deref()
60    }
61    /// <p>The mapping template to use for requests.</p>
62    /// <p>A resolver uses a request mapping template to convert a GraphQL expression into a format that a data source can understand. Mapping templates are written in Apache Velocity Template Language (VTL).</p>
63    /// <p>VTL request mapping templates are optional when using an Lambda data source. For all other data sources, VTL request and response mapping templates are required.</p>
64    pub fn request_mapping_template(&self) -> ::std::option::Option<&str> {
65        self.request_mapping_template.as_deref()
66    }
67    /// <p>The mapping template to use for responses from the data source.</p>
68    pub fn response_mapping_template(&self) -> ::std::option::Option<&str> {
69        self.response_mapping_template.as_deref()
70    }
71    /// <p>The resolver type.</p>
72    /// <ul>
73    /// <li>
74    /// <p><b>UNIT</b>: A UNIT resolver type. A UNIT resolver is the default resolver type. You can use a UNIT resolver to run a GraphQL query against a single data source.</p></li>
75    /// <li>
76    /// <p><b>PIPELINE</b>: A PIPELINE resolver type. You can use a PIPELINE resolver to invoke a series of <code>Function</code> objects in a serial manner. You can use a pipeline resolver to run a GraphQL query against multiple data sources.</p></li>
77    /// </ul>
78    pub fn kind(&self) -> ::std::option::Option<&crate::types::ResolverKind> {
79        self.kind.as_ref()
80    }
81    /// <p>The <code>PipelineConfig</code>.</p>
82    pub fn pipeline_config(&self) -> ::std::option::Option<&crate::types::PipelineConfig> {
83        self.pipeline_config.as_ref()
84    }
85    /// <p>The <code>SyncConfig</code> for a resolver attached to a versioned data source.</p>
86    pub fn sync_config(&self) -> ::std::option::Option<&crate::types::SyncConfig> {
87        self.sync_config.as_ref()
88    }
89    /// <p>The caching configuration for the resolver.</p>
90    pub fn caching_config(&self) -> ::std::option::Option<&crate::types::CachingConfig> {
91        self.caching_config.as_ref()
92    }
93    /// <p>The maximum batching size for a resolver.</p>
94    pub fn max_batch_size(&self) -> ::std::option::Option<i32> {
95        self.max_batch_size
96    }
97    /// <p>Describes a runtime used by an Amazon Web Services AppSync pipeline resolver or Amazon Web Services AppSync function. Specifies the name and version of the runtime to use. Note that if a runtime is specified, code must also be specified.</p>
98    pub fn runtime(&self) -> ::std::option::Option<&crate::types::AppSyncRuntime> {
99        self.runtime.as_ref()
100    }
101    /// <p>The <code>resolver</code> code that contains the request and response functions. When code is used, the <code>runtime</code> is required. The <code>runtime</code> value must be <code>APPSYNC_JS</code>.</p>
102    pub fn code(&self) -> ::std::option::Option<&str> {
103        self.code.as_deref()
104    }
105    /// <p>Enables or disables enhanced resolver metrics for specified resolvers. Note that <code>metricsConfig</code> won't be used unless the <code>resolverLevelMetricsBehavior</code> value is set to <code>PER_RESOLVER_METRICS</code>. If the <code>resolverLevelMetricsBehavior</code> is set to <code>FULL_REQUEST_RESOLVER_METRICS</code> instead, <code>metricsConfig</code> will be ignored. However, you can still set its value.</p>
106    /// <p><code>metricsConfig</code> can be <code>ENABLED</code> or <code>DISABLED</code>.</p>
107    pub fn metrics_config(&self) -> ::std::option::Option<&crate::types::ResolverLevelMetricsConfig> {
108        self.metrics_config.as_ref()
109    }
110}
111impl CreateResolverInput {
112    /// Creates a new builder-style object to manufacture [`CreateResolverInput`](crate::operation::create_resolver::CreateResolverInput).
113    pub fn builder() -> crate::operation::create_resolver::builders::CreateResolverInputBuilder {
114        crate::operation::create_resolver::builders::CreateResolverInputBuilder::default()
115    }
116}
117
118/// A builder for [`CreateResolverInput`](crate::operation::create_resolver::CreateResolverInput).
119#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
120#[non_exhaustive]
121pub struct CreateResolverInputBuilder {
122    pub(crate) api_id: ::std::option::Option<::std::string::String>,
123    pub(crate) type_name: ::std::option::Option<::std::string::String>,
124    pub(crate) field_name: ::std::option::Option<::std::string::String>,
125    pub(crate) data_source_name: ::std::option::Option<::std::string::String>,
126    pub(crate) request_mapping_template: ::std::option::Option<::std::string::String>,
127    pub(crate) response_mapping_template: ::std::option::Option<::std::string::String>,
128    pub(crate) kind: ::std::option::Option<crate::types::ResolverKind>,
129    pub(crate) pipeline_config: ::std::option::Option<crate::types::PipelineConfig>,
130    pub(crate) sync_config: ::std::option::Option<crate::types::SyncConfig>,
131    pub(crate) caching_config: ::std::option::Option<crate::types::CachingConfig>,
132    pub(crate) max_batch_size: ::std::option::Option<i32>,
133    pub(crate) runtime: ::std::option::Option<crate::types::AppSyncRuntime>,
134    pub(crate) code: ::std::option::Option<::std::string::String>,
135    pub(crate) metrics_config: ::std::option::Option<crate::types::ResolverLevelMetricsConfig>,
136}
137impl CreateResolverInputBuilder {
138    /// <p>The ID for the GraphQL API for which the resolver is being created.</p>
139    /// This field is required.
140    pub fn api_id(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
141        self.api_id = ::std::option::Option::Some(input.into());
142        self
143    }
144    /// <p>The ID for the GraphQL API for which the resolver is being created.</p>
145    pub fn set_api_id(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
146        self.api_id = input;
147        self
148    }
149    /// <p>The ID for the GraphQL API for which the resolver is being created.</p>
150    pub fn get_api_id(&self) -> &::std::option::Option<::std::string::String> {
151        &self.api_id
152    }
153    /// <p>The name of the <code>Type</code>.</p>
154    /// This field is required.
155    pub fn type_name(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
156        self.type_name = ::std::option::Option::Some(input.into());
157        self
158    }
159    /// <p>The name of the <code>Type</code>.</p>
160    pub fn set_type_name(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
161        self.type_name = input;
162        self
163    }
164    /// <p>The name of the <code>Type</code>.</p>
165    pub fn get_type_name(&self) -> &::std::option::Option<::std::string::String> {
166        &self.type_name
167    }
168    /// <p>The name of the field to attach the resolver to.</p>
169    /// This field is required.
170    pub fn field_name(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
171        self.field_name = ::std::option::Option::Some(input.into());
172        self
173    }
174    /// <p>The name of the field to attach the resolver to.</p>
175    pub fn set_field_name(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
176        self.field_name = input;
177        self
178    }
179    /// <p>The name of the field to attach the resolver to.</p>
180    pub fn get_field_name(&self) -> &::std::option::Option<::std::string::String> {
181        &self.field_name
182    }
183    /// <p>The name of the data source for which the resolver is being created.</p>
184    pub fn data_source_name(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
185        self.data_source_name = ::std::option::Option::Some(input.into());
186        self
187    }
188    /// <p>The name of the data source for which the resolver is being created.</p>
189    pub fn set_data_source_name(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
190        self.data_source_name = input;
191        self
192    }
193    /// <p>The name of the data source for which the resolver is being created.</p>
194    pub fn get_data_source_name(&self) -> &::std::option::Option<::std::string::String> {
195        &self.data_source_name
196    }
197    /// <p>The mapping template to use for requests.</p>
198    /// <p>A resolver uses a request mapping template to convert a GraphQL expression into a format that a data source can understand. Mapping templates are written in Apache Velocity Template Language (VTL).</p>
199    /// <p>VTL request mapping templates are optional when using an Lambda data source. For all other data sources, VTL request and response mapping templates are required.</p>
200    pub fn request_mapping_template(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
201        self.request_mapping_template = ::std::option::Option::Some(input.into());
202        self
203    }
204    /// <p>The mapping template to use for requests.</p>
205    /// <p>A resolver uses a request mapping template to convert a GraphQL expression into a format that a data source can understand. Mapping templates are written in Apache Velocity Template Language (VTL).</p>
206    /// <p>VTL request mapping templates are optional when using an Lambda data source. For all other data sources, VTL request and response mapping templates are required.</p>
207    pub fn set_request_mapping_template(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
208        self.request_mapping_template = input;
209        self
210    }
211    /// <p>The mapping template to use for requests.</p>
212    /// <p>A resolver uses a request mapping template to convert a GraphQL expression into a format that a data source can understand. Mapping templates are written in Apache Velocity Template Language (VTL).</p>
213    /// <p>VTL request mapping templates are optional when using an Lambda data source. For all other data sources, VTL request and response mapping templates are required.</p>
214    pub fn get_request_mapping_template(&self) -> &::std::option::Option<::std::string::String> {
215        &self.request_mapping_template
216    }
217    /// <p>The mapping template to use for responses from the data source.</p>
218    pub fn response_mapping_template(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
219        self.response_mapping_template = ::std::option::Option::Some(input.into());
220        self
221    }
222    /// <p>The mapping template to use for responses from the data source.</p>
223    pub fn set_response_mapping_template(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
224        self.response_mapping_template = input;
225        self
226    }
227    /// <p>The mapping template to use for responses from the data source.</p>
228    pub fn get_response_mapping_template(&self) -> &::std::option::Option<::std::string::String> {
229        &self.response_mapping_template
230    }
231    /// <p>The resolver type.</p>
232    /// <ul>
233    /// <li>
234    /// <p><b>UNIT</b>: A UNIT resolver type. A UNIT resolver is the default resolver type. You can use a UNIT resolver to run a GraphQL query against a single data source.</p></li>
235    /// <li>
236    /// <p><b>PIPELINE</b>: A PIPELINE resolver type. You can use a PIPELINE resolver to invoke a series of <code>Function</code> objects in a serial manner. You can use a pipeline resolver to run a GraphQL query against multiple data sources.</p></li>
237    /// </ul>
238    pub fn kind(mut self, input: crate::types::ResolverKind) -> Self {
239        self.kind = ::std::option::Option::Some(input);
240        self
241    }
242    /// <p>The resolver type.</p>
243    /// <ul>
244    /// <li>
245    /// <p><b>UNIT</b>: A UNIT resolver type. A UNIT resolver is the default resolver type. You can use a UNIT resolver to run a GraphQL query against a single data source.</p></li>
246    /// <li>
247    /// <p><b>PIPELINE</b>: A PIPELINE resolver type. You can use a PIPELINE resolver to invoke a series of <code>Function</code> objects in a serial manner. You can use a pipeline resolver to run a GraphQL query against multiple data sources.</p></li>
248    /// </ul>
249    pub fn set_kind(mut self, input: ::std::option::Option<crate::types::ResolverKind>) -> Self {
250        self.kind = input;
251        self
252    }
253    /// <p>The resolver type.</p>
254    /// <ul>
255    /// <li>
256    /// <p><b>UNIT</b>: A UNIT resolver type. A UNIT resolver is the default resolver type. You can use a UNIT resolver to run a GraphQL query against a single data source.</p></li>
257    /// <li>
258    /// <p><b>PIPELINE</b>: A PIPELINE resolver type. You can use a PIPELINE resolver to invoke a series of <code>Function</code> objects in a serial manner. You can use a pipeline resolver to run a GraphQL query against multiple data sources.</p></li>
259    /// </ul>
260    pub fn get_kind(&self) -> &::std::option::Option<crate::types::ResolverKind> {
261        &self.kind
262    }
263    /// <p>The <code>PipelineConfig</code>.</p>
264    pub fn pipeline_config(mut self, input: crate::types::PipelineConfig) -> Self {
265        self.pipeline_config = ::std::option::Option::Some(input);
266        self
267    }
268    /// <p>The <code>PipelineConfig</code>.</p>
269    pub fn set_pipeline_config(mut self, input: ::std::option::Option<crate::types::PipelineConfig>) -> Self {
270        self.pipeline_config = input;
271        self
272    }
273    /// <p>The <code>PipelineConfig</code>.</p>
274    pub fn get_pipeline_config(&self) -> &::std::option::Option<crate::types::PipelineConfig> {
275        &self.pipeline_config
276    }
277    /// <p>The <code>SyncConfig</code> for a resolver attached to a versioned data source.</p>
278    pub fn sync_config(mut self, input: crate::types::SyncConfig) -> Self {
279        self.sync_config = ::std::option::Option::Some(input);
280        self
281    }
282    /// <p>The <code>SyncConfig</code> for a resolver attached to a versioned data source.</p>
283    pub fn set_sync_config(mut self, input: ::std::option::Option<crate::types::SyncConfig>) -> Self {
284        self.sync_config = input;
285        self
286    }
287    /// <p>The <code>SyncConfig</code> for a resolver attached to a versioned data source.</p>
288    pub fn get_sync_config(&self) -> &::std::option::Option<crate::types::SyncConfig> {
289        &self.sync_config
290    }
291    /// <p>The caching configuration for the resolver.</p>
292    pub fn caching_config(mut self, input: crate::types::CachingConfig) -> Self {
293        self.caching_config = ::std::option::Option::Some(input);
294        self
295    }
296    /// <p>The caching configuration for the resolver.</p>
297    pub fn set_caching_config(mut self, input: ::std::option::Option<crate::types::CachingConfig>) -> Self {
298        self.caching_config = input;
299        self
300    }
301    /// <p>The caching configuration for the resolver.</p>
302    pub fn get_caching_config(&self) -> &::std::option::Option<crate::types::CachingConfig> {
303        &self.caching_config
304    }
305    /// <p>The maximum batching size for a resolver.</p>
306    pub fn max_batch_size(mut self, input: i32) -> Self {
307        self.max_batch_size = ::std::option::Option::Some(input);
308        self
309    }
310    /// <p>The maximum batching size for a resolver.</p>
311    pub fn set_max_batch_size(mut self, input: ::std::option::Option<i32>) -> Self {
312        self.max_batch_size = input;
313        self
314    }
315    /// <p>The maximum batching size for a resolver.</p>
316    pub fn get_max_batch_size(&self) -> &::std::option::Option<i32> {
317        &self.max_batch_size
318    }
319    /// <p>Describes a runtime used by an Amazon Web Services AppSync pipeline resolver or Amazon Web Services AppSync function. Specifies the name and version of the runtime to use. Note that if a runtime is specified, code must also be specified.</p>
320    pub fn runtime(mut self, input: crate::types::AppSyncRuntime) -> Self {
321        self.runtime = ::std::option::Option::Some(input);
322        self
323    }
324    /// <p>Describes a runtime used by an Amazon Web Services AppSync pipeline resolver or Amazon Web Services AppSync function. Specifies the name and version of the runtime to use. Note that if a runtime is specified, code must also be specified.</p>
325    pub fn set_runtime(mut self, input: ::std::option::Option<crate::types::AppSyncRuntime>) -> Self {
326        self.runtime = input;
327        self
328    }
329    /// <p>Describes a runtime used by an Amazon Web Services AppSync pipeline resolver or Amazon Web Services AppSync function. Specifies the name and version of the runtime to use. Note that if a runtime is specified, code must also be specified.</p>
330    pub fn get_runtime(&self) -> &::std::option::Option<crate::types::AppSyncRuntime> {
331        &self.runtime
332    }
333    /// <p>The <code>resolver</code> code that contains the request and response functions. When code is used, the <code>runtime</code> is required. The <code>runtime</code> value must be <code>APPSYNC_JS</code>.</p>
334    pub fn code(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
335        self.code = ::std::option::Option::Some(input.into());
336        self
337    }
338    /// <p>The <code>resolver</code> code that contains the request and response functions. When code is used, the <code>runtime</code> is required. The <code>runtime</code> value must be <code>APPSYNC_JS</code>.</p>
339    pub fn set_code(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
340        self.code = input;
341        self
342    }
343    /// <p>The <code>resolver</code> code that contains the request and response functions. When code is used, the <code>runtime</code> is required. The <code>runtime</code> value must be <code>APPSYNC_JS</code>.</p>
344    pub fn get_code(&self) -> &::std::option::Option<::std::string::String> {
345        &self.code
346    }
347    /// <p>Enables or disables enhanced resolver metrics for specified resolvers. Note that <code>metricsConfig</code> won't be used unless the <code>resolverLevelMetricsBehavior</code> value is set to <code>PER_RESOLVER_METRICS</code>. If the <code>resolverLevelMetricsBehavior</code> is set to <code>FULL_REQUEST_RESOLVER_METRICS</code> instead, <code>metricsConfig</code> will be ignored. However, you can still set its value.</p>
348    /// <p><code>metricsConfig</code> can be <code>ENABLED</code> or <code>DISABLED</code>.</p>
349    pub fn metrics_config(mut self, input: crate::types::ResolverLevelMetricsConfig) -> Self {
350        self.metrics_config = ::std::option::Option::Some(input);
351        self
352    }
353    /// <p>Enables or disables enhanced resolver metrics for specified resolvers. Note that <code>metricsConfig</code> won't be used unless the <code>resolverLevelMetricsBehavior</code> value is set to <code>PER_RESOLVER_METRICS</code>. If the <code>resolverLevelMetricsBehavior</code> is set to <code>FULL_REQUEST_RESOLVER_METRICS</code> instead, <code>metricsConfig</code> will be ignored. However, you can still set its value.</p>
354    /// <p><code>metricsConfig</code> can be <code>ENABLED</code> or <code>DISABLED</code>.</p>
355    pub fn set_metrics_config(mut self, input: ::std::option::Option<crate::types::ResolverLevelMetricsConfig>) -> Self {
356        self.metrics_config = input;
357        self
358    }
359    /// <p>Enables or disables enhanced resolver metrics for specified resolvers. Note that <code>metricsConfig</code> won't be used unless the <code>resolverLevelMetricsBehavior</code> value is set to <code>PER_RESOLVER_METRICS</code>. If the <code>resolverLevelMetricsBehavior</code> is set to <code>FULL_REQUEST_RESOLVER_METRICS</code> instead, <code>metricsConfig</code> will be ignored. However, you can still set its value.</p>
360    /// <p><code>metricsConfig</code> can be <code>ENABLED</code> or <code>DISABLED</code>.</p>
361    pub fn get_metrics_config(&self) -> &::std::option::Option<crate::types::ResolverLevelMetricsConfig> {
362        &self.metrics_config
363    }
364    /// Consumes the builder and constructs a [`CreateResolverInput`](crate::operation::create_resolver::CreateResolverInput).
365    pub fn build(
366        self,
367    ) -> ::std::result::Result<crate::operation::create_resolver::CreateResolverInput, ::aws_smithy_types::error::operation::BuildError> {
368        ::std::result::Result::Ok(crate::operation::create_resolver::CreateResolverInput {
369            api_id: self.api_id,
370            type_name: self.type_name,
371            field_name: self.field_name,
372            data_source_name: self.data_source_name,
373            request_mapping_template: self.request_mapping_template,
374            response_mapping_template: self.response_mapping_template,
375            kind: self.kind,
376            pipeline_config: self.pipeline_config,
377            sync_config: self.sync_config,
378            caching_config: self.caching_config,
379            max_batch_size: self.max_batch_size,
380            runtime: self.runtime,
381            code: self.code,
382            metrics_config: self.metrics_config,
383        })
384    }
385}