1// Code generated by smithy-go-codegen DO NOT EDIT.
2
3package appsync
4
5import (
6	"context"
7	awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware"
8	"github.com/aws/aws-sdk-go-v2/aws/signer/v4"
9	"github.com/aws/aws-sdk-go-v2/service/appsync/types"
10	"github.com/aws/smithy-go/middleware"
11	smithyhttp "github.com/aws/smithy-go/transport/http"
12)
13
14// Creates a cache for the GraphQL API.
15func (c *Client) CreateApiCache(ctx context.Context, params *CreateApiCacheInput, optFns ...func(*Options)) (*CreateApiCacheOutput, error) {
16	if params == nil {
17		params = &CreateApiCacheInput{}
18	}
19
20	result, metadata, err := c.invokeOperation(ctx, "CreateApiCache", params, optFns, addOperationCreateApiCacheMiddlewares)
21	if err != nil {
22		return nil, err
23	}
24
25	out := result.(*CreateApiCacheOutput)
26	out.ResultMetadata = metadata
27	return out, nil
28}
29
30// Represents the input of a CreateApiCache operation.
31type CreateApiCacheInput struct {
32
33	// Caching behavior.
34	//
35	// * FULL_REQUEST_CACHING: All requests are fully cached.
36	//
37	// *
38	// PER_RESOLVER_CACHING: Individual resolvers that you specify are cached.
39	//
40	// This member is required.
41	ApiCachingBehavior types.ApiCachingBehavior
42
43	// The GraphQL API Id.
44	//
45	// This member is required.
46	ApiId *string
47
48	// TTL in seconds for cache entries. Valid values are between 1 and 3600 seconds.
49	//
50	// This member is required.
51	Ttl int64
52
53	// The cache instance type. Valid values are
54	//
55	// * SMALL
56	//
57	// * MEDIUM
58	//
59	// * LARGE
60	//
61	// *
62	// XLARGE
63	//
64	// * LARGE_2X
65	//
66	// * LARGE_4X
67	//
68	// * LARGE_8X (not available in all regions)
69	//
70	// *
71	// LARGE_12X
72	//
73	// Historically, instance types were identified by an EC2-style value.
74	// As of July 2020, this is deprecated, and the generic identifiers above should be
75	// used. The following legacy instance types are available, but their use is
76	// discouraged:
77	//
78	// * T2_SMALL: A t2.small instance type.
79	//
80	// * T2_MEDIUM: A t2.medium
81	// instance type.
82	//
83	// * R4_LARGE: A r4.large instance type.
84	//
85	// * R4_XLARGE: A r4.xlarge
86	// instance type.
87	//
88	// * R4_2XLARGE: A r4.2xlarge instance type.
89	//
90	// * R4_4XLARGE: A
91	// r4.4xlarge instance type.
92	//
93	// * R4_8XLARGE: A r4.8xlarge instance type.
94	//
95	// This member is required.
96	Type types.ApiCacheType
97
98	// At rest encryption flag for cache. This setting cannot be updated after
99	// creation.
100	AtRestEncryptionEnabled bool
101
102	// Transit encryption flag when connecting to cache. This setting cannot be updated
103	// after creation.
104	TransitEncryptionEnabled bool
105}
106
107// Represents the output of a CreateApiCache operation.
108type CreateApiCacheOutput struct {
109
110	// The ApiCache object.
111	ApiCache *types.ApiCache
112
113	// Metadata pertaining to the operation's result.
114	ResultMetadata middleware.Metadata
115}
116
117func addOperationCreateApiCacheMiddlewares(stack *middleware.Stack, options Options) (err error) {
118	err = stack.Serialize.Add(&awsRestjson1_serializeOpCreateApiCache{}, middleware.After)
119	if err != nil {
120		return err
121	}
122	err = stack.Deserialize.Add(&awsRestjson1_deserializeOpCreateApiCache{}, middleware.After)
123	if err != nil {
124		return err
125	}
126	if err = addSetLoggerMiddleware(stack, options); err != nil {
127		return err
128	}
129	if err = awsmiddleware.AddClientRequestIDMiddleware(stack); err != nil {
130		return err
131	}
132	if err = smithyhttp.AddComputeContentLengthMiddleware(stack); err != nil {
133		return err
134	}
135	if err = addResolveEndpointMiddleware(stack, options); err != nil {
136		return err
137	}
138	if err = v4.AddComputePayloadSHA256Middleware(stack); err != nil {
139		return err
140	}
141	if err = addRetryMiddlewares(stack, options); err != nil {
142		return err
143	}
144	if err = addHTTPSignerV4Middleware(stack, options); err != nil {
145		return err
146	}
147	if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil {
148		return err
149	}
150	if err = awsmiddleware.AddRecordResponseTiming(stack); err != nil {
151		return err
152	}
153	if err = addClientUserAgent(stack); err != nil {
154		return err
155	}
156	if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil {
157		return err
158	}
159	if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil {
160		return err
161	}
162	if err = addOpCreateApiCacheValidationMiddleware(stack); err != nil {
163		return err
164	}
165	if err = stack.Initialize.Add(newServiceMetadataMiddleware_opCreateApiCache(options.Region), middleware.Before); err != nil {
166		return err
167	}
168	if err = addRequestIDRetrieverMiddleware(stack); err != nil {
169		return err
170	}
171	if err = addResponseErrorMiddleware(stack); err != nil {
172		return err
173	}
174	if err = addRequestResponseLogging(stack, options); err != nil {
175		return err
176	}
177	return nil
178}
179
180func newServiceMetadataMiddleware_opCreateApiCache(region string) *awsmiddleware.RegisterServiceMetadata {
181	return &awsmiddleware.RegisterServiceMetadata{
182		Region:        region,
183		ServiceID:     ServiceID,
184		SigningName:   "appsync",
185		OperationName: "CreateApiCache",
186	}
187}
188