// *** WARNING: this file was generated by test. ***
// *** Do not edit by hand unless you're certain you know what you are doing! ***

package documentdb

import (
	"context"
	"reflect"

	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)

// An Azure Cosmos DB container.
// API Version: 2021-03-15.
//
// ## Example Usage
// ### CosmosDBSqlContainerCreateUpdate
//
// ```go
// package main
//
// import (
// 	documentdb "github.com/pulumi/pulumi-azure-native/sdk/go/azure/documentdb"
// 	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
// )
//
// func main() {
// 	pulumi.Run(func(ctx *pulumi.Context) error {
// 		_, err := documentdb.NewSqlResourceSqlContainer(ctx, "sqlResourceSqlContainer", &documentdb.SqlResourceSqlContainerArgs{
// 			AccountName:   pulumi.String("ddb1"),
// 			ContainerName: pulumi.String("containerName"),
// 			DatabaseName:  pulumi.String("databaseName"),
// 			Location:      pulumi.String("West US"),
// 			Options:       nil,
// 			Resource: &documentdb.SqlContainerResourceArgs{
// 				ConflictResolutionPolicy: &documentdb.ConflictResolutionPolicyArgs{
// 					ConflictResolutionPath: pulumi.String("/path"),
// 					Mode:                   pulumi.String("LastWriterWins"),
// 				},
// 				DefaultTtl: pulumi.Int(100),
// 				Id:         pulumi.String("containerName"),
// 				IndexingPolicy: &documentdb.IndexingPolicyArgs{
// 					Automatic:     pulumi.Bool(true),
// 					ExcludedPaths: documentdb.ExcludedPathArray{},
// 					IncludedPaths: documentdb.IncludedPathArray{
// 						&documentdb.IncludedPathArgs{
// 							Indexes: documentdb.IndexesArray{
// 								&documentdb.IndexesArgs{
// 									DataType:  pulumi.String("String"),
// 									Kind:      pulumi.String("Range"),
// 									Precision: -1,
// 								},
// 								&documentdb.IndexesArgs{
// 									DataType:  pulumi.String("Number"),
// 									Kind:      pulumi.String("Range"),
// 									Precision: -1,
// 								},
// 							},
// 							Path: pulumi.String("/*"),
// 						},
// 					},
// 					IndexingMode: pulumi.String("consistent"),
// 				},
// 				PartitionKey: &documentdb.ContainerPartitionKeyArgs{
// 					Kind: pulumi.String("Hash"),
// 					Paths: pulumi.StringArray{
// 						pulumi.String("/AccountNumber"),
// 					},
// 				},
// 				UniqueKeyPolicy: &documentdb.UniqueKeyPolicyArgs{
// 					UniqueKeys: documentdb.UniqueKeyArray{
// 						&documentdb.UniqueKeyArgs{
// 							Paths: pulumi.StringArray{
// 								pulumi.String("/testPath"),
// 							},
// 						},
// 					},
// 				},
// 			},
// 			ResourceGroupName: pulumi.String("rg1"),
// 			Tags:              nil,
// 		})
// 		if err != nil {
// 			return err
// 		}
// 		return nil
// 	})
// }
//
// ```
//
// ## Import
//
// An existing resource can be imported using its type token, name, and identifier, e.g.
//
// ```sh
// $ pulumi import azure-native:documentdb:SqlResourceSqlContainer containerName /subscriptions/subid/resourceGroups/rg1/providers/Microsoft.DocumentDB/databaseAccounts/ddb1/sqlDatabases/databaseName/sqlContainers/containerName
// ```
type SqlResourceSqlContainer struct {
	pulumi.CustomResourceState

	Resource SqlContainerGetPropertiesResponseResourcePtrOutput `pulumi:"resource"`
}

// NewSqlResourceSqlContainer registers a new resource with the given unique name, arguments, and options.
func NewSqlResourceSqlContainer(ctx *pulumi.Context,
	name string, args *SqlResourceSqlContainerArgs, opts ...pulumi.ResourceOption) (*SqlResourceSqlContainer, error) {
	if args == nil {
		args = &SqlResourceSqlContainerArgs{}
	}

	var resource SqlResourceSqlContainer
	err := ctx.RegisterResource("azure-native:documentdb:SqlResourceSqlContainer", name, args, &resource, opts...)
	if err != nil {
		return nil, err
	}
	return &resource, nil
}

// GetSqlResourceSqlContainer gets an existing SqlResourceSqlContainer resource's state with the given name, ID, and optional
// state properties that are used to uniquely qualify the lookup (nil if not required).
func GetSqlResourceSqlContainer(ctx *pulumi.Context,
	name string, id pulumi.IDInput, state *SqlResourceSqlContainerState, opts ...pulumi.ResourceOption) (*SqlResourceSqlContainer, error) {
	var resource SqlResourceSqlContainer
	err := ctx.ReadResource("azure-native:documentdb:SqlResourceSqlContainer", name, id, state, &resource, opts...)
	if err != nil {
		return nil, err
	}
	return &resource, nil
}

// Input properties used for looking up and filtering SqlResourceSqlContainer resources.
type sqlResourceSqlContainerState struct {
}

type SqlResourceSqlContainerState struct {
}

func (SqlResourceSqlContainerState) ElementType() reflect.Type {
	return reflect.TypeOf((*sqlResourceSqlContainerState)(nil)).Elem()
}

type sqlResourceSqlContainerArgs struct {
}

// The set of arguments for constructing a SqlResourceSqlContainer resource.
type SqlResourceSqlContainerArgs struct {
}

func (SqlResourceSqlContainerArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*sqlResourceSqlContainerArgs)(nil)).Elem()
}

type SqlResourceSqlContainerInput interface {
	pulumi.Input

	ToSqlResourceSqlContainerOutput() SqlResourceSqlContainerOutput
	ToSqlResourceSqlContainerOutputWithContext(ctx context.Context) SqlResourceSqlContainerOutput
}

func (*SqlResourceSqlContainer) ElementType() reflect.Type {
	return reflect.TypeOf((**SqlResourceSqlContainer)(nil)).Elem()
}

func (i *SqlResourceSqlContainer) ToSqlResourceSqlContainerOutput() SqlResourceSqlContainerOutput {
	return i.ToSqlResourceSqlContainerOutputWithContext(context.Background())
}

func (i *SqlResourceSqlContainer) ToSqlResourceSqlContainerOutputWithContext(ctx context.Context) SqlResourceSqlContainerOutput {
	return pulumi.ToOutputWithContext(ctx, i).(SqlResourceSqlContainerOutput)
}

type SqlResourceSqlContainerOutput struct{ *pulumi.OutputState }

func (SqlResourceSqlContainerOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**SqlResourceSqlContainer)(nil)).Elem()
}

func (o SqlResourceSqlContainerOutput) ToSqlResourceSqlContainerOutput() SqlResourceSqlContainerOutput {
	return o
}

func (o SqlResourceSqlContainerOutput) ToSqlResourceSqlContainerOutputWithContext(ctx context.Context) SqlResourceSqlContainerOutput {
	return o
}

func init() {
	pulumi.RegisterOutputType(SqlResourceSqlContainerOutput{})
}
