1// Code generated by smithy-go-codegen DO NOT EDIT. 2 3package athena 4 5import ( 6 "context" 7 "fmt" 8 awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" 9 "github.com/aws/aws-sdk-go-v2/aws/signer/v4" 10 "github.com/aws/smithy-go/middleware" 11 smithyhttp "github.com/aws/smithy-go/transport/http" 12) 13 14// Creates a named query in the specified workgroup. Requires that you have access 15// to the workgroup. For code samples using the Amazon Web Services SDK for Java, 16// see Examples and Code Samples 17// (http://docs.aws.amazon.com/athena/latest/ug/code-samples.html) in the Amazon 18// Athena User Guide. 19func (c *Client) CreateNamedQuery(ctx context.Context, params *CreateNamedQueryInput, optFns ...func(*Options)) (*CreateNamedQueryOutput, error) { 20 if params == nil { 21 params = &CreateNamedQueryInput{} 22 } 23 24 result, metadata, err := c.invokeOperation(ctx, "CreateNamedQuery", params, optFns, c.addOperationCreateNamedQueryMiddlewares) 25 if err != nil { 26 return nil, err 27 } 28 29 out := result.(*CreateNamedQueryOutput) 30 out.ResultMetadata = metadata 31 return out, nil 32} 33 34type CreateNamedQueryInput struct { 35 36 // The database to which the query belongs. 37 // 38 // This member is required. 39 Database *string 40 41 // The query name. 42 // 43 // This member is required. 44 Name *string 45 46 // The contents of the query with all query statements. 47 // 48 // This member is required. 49 QueryString *string 50 51 // A unique case-sensitive string used to ensure the request to create the query is 52 // idempotent (executes only once). If another CreateNamedQuery request is 53 // received, the same response is returned and another query is not created. If a 54 // parameter has changed, for example, the QueryString, an error is returned. This 55 // token is listed as not required because Amazon Web Services SDKs (for example 56 // the Amazon Web Services SDK for Java) auto-generate the token for users. If you 57 // are not using the Amazon Web Services SDK or the Amazon Web Services CLI, you 58 // must provide this token or the action will fail. 59 ClientRequestToken *string 60 61 // The query description. 62 Description *string 63 64 // The name of the workgroup in which the named query is being created. 65 WorkGroup *string 66 67 noSmithyDocumentSerde 68} 69 70type CreateNamedQueryOutput struct { 71 72 // The unique ID of the query. 73 NamedQueryId *string 74 75 // Metadata pertaining to the operation's result. 76 ResultMetadata middleware.Metadata 77 78 noSmithyDocumentSerde 79} 80 81func (c *Client) addOperationCreateNamedQueryMiddlewares(stack *middleware.Stack, options Options) (err error) { 82 err = stack.Serialize.Add(&awsAwsjson11_serializeOpCreateNamedQuery{}, middleware.After) 83 if err != nil { 84 return err 85 } 86 err = stack.Deserialize.Add(&awsAwsjson11_deserializeOpCreateNamedQuery{}, middleware.After) 87 if err != nil { 88 return err 89 } 90 if err = addSetLoggerMiddleware(stack, options); err != nil { 91 return err 92 } 93 if err = awsmiddleware.AddClientRequestIDMiddleware(stack); err != nil { 94 return err 95 } 96 if err = smithyhttp.AddComputeContentLengthMiddleware(stack); err != nil { 97 return err 98 } 99 if err = addResolveEndpointMiddleware(stack, options); err != nil { 100 return err 101 } 102 if err = v4.AddComputePayloadSHA256Middleware(stack); err != nil { 103 return err 104 } 105 if err = addRetryMiddlewares(stack, options); err != nil { 106 return err 107 } 108 if err = addHTTPSignerV4Middleware(stack, options); err != nil { 109 return err 110 } 111 if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil { 112 return err 113 } 114 if err = awsmiddleware.AddRecordResponseTiming(stack); err != nil { 115 return err 116 } 117 if err = addClientUserAgent(stack); err != nil { 118 return err 119 } 120 if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { 121 return err 122 } 123 if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { 124 return err 125 } 126 if err = addIdempotencyToken_opCreateNamedQueryMiddleware(stack, options); err != nil { 127 return err 128 } 129 if err = addOpCreateNamedQueryValidationMiddleware(stack); err != nil { 130 return err 131 } 132 if err = stack.Initialize.Add(newServiceMetadataMiddleware_opCreateNamedQuery(options.Region), middleware.Before); err != nil { 133 return err 134 } 135 if err = addRequestIDRetrieverMiddleware(stack); err != nil { 136 return err 137 } 138 if err = addResponseErrorMiddleware(stack); err != nil { 139 return err 140 } 141 if err = addRequestResponseLogging(stack, options); err != nil { 142 return err 143 } 144 return nil 145} 146 147type idempotencyToken_initializeOpCreateNamedQuery struct { 148 tokenProvider IdempotencyTokenProvider 149} 150 151func (*idempotencyToken_initializeOpCreateNamedQuery) ID() string { 152 return "OperationIdempotencyTokenAutoFill" 153} 154 155func (m *idempotencyToken_initializeOpCreateNamedQuery) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( 156 out middleware.InitializeOutput, metadata middleware.Metadata, err error, 157) { 158 if m.tokenProvider == nil { 159 return next.HandleInitialize(ctx, in) 160 } 161 162 input, ok := in.Parameters.(*CreateNamedQueryInput) 163 if !ok { 164 return out, metadata, fmt.Errorf("expected middleware input to be of type *CreateNamedQueryInput ") 165 } 166 167 if input.ClientRequestToken == nil { 168 t, err := m.tokenProvider.GetIdempotencyToken() 169 if err != nil { 170 return out, metadata, err 171 } 172 input.ClientRequestToken = &t 173 } 174 return next.HandleInitialize(ctx, in) 175} 176func addIdempotencyToken_opCreateNamedQueryMiddleware(stack *middleware.Stack, cfg Options) error { 177 return stack.Initialize.Add(&idempotencyToken_initializeOpCreateNamedQuery{tokenProvider: cfg.IdempotencyTokenProvider}, middleware.Before) 178} 179 180func newServiceMetadataMiddleware_opCreateNamedQuery(region string) *awsmiddleware.RegisterServiceMetadata { 181 return &awsmiddleware.RegisterServiceMetadata{ 182 Region: region, 183 ServiceID: ServiceID, 184 SigningName: "athena", 185 OperationName: "CreateNamedQuery", 186 } 187} 188