// *** 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"
)

type CompositePathResponse struct {
	// Sort order for composite paths.
	Order *string `pulumi:"order"`
	// The path for which the indexing behavior applies to. Index paths typically start with root and end with wildcard (/path/*)
	Path *string `pulumi:"path"`
}

type CompositePathResponseOutput struct{ *pulumi.OutputState }

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

func (o CompositePathResponseOutput) ToCompositePathResponseOutput() CompositePathResponseOutput {
	return o
}

func (o CompositePathResponseOutput) ToCompositePathResponseOutputWithContext(ctx context.Context) CompositePathResponseOutput {
	return o
}

// Sort order for composite paths.
func (o CompositePathResponseOutput) Order() pulumi.StringPtrOutput {
	return o.ApplyT(func(v CompositePathResponse) *string { return v.Order }).(pulumi.StringPtrOutput)
}

// The path for which the indexing behavior applies to. Index paths typically start with root and end with wildcard (/path/*)
func (o CompositePathResponseOutput) Path() pulumi.StringPtrOutput {
	return o.ApplyT(func(v CompositePathResponse) *string { return v.Path }).(pulumi.StringPtrOutput)
}

type CompositePathResponseArrayOutput struct{ *pulumi.OutputState }

func (CompositePathResponseArrayOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*[]CompositePathResponse)(nil)).Elem()
}

func (o CompositePathResponseArrayOutput) ToCompositePathResponseArrayOutput() CompositePathResponseArrayOutput {
	return o
}

func (o CompositePathResponseArrayOutput) ToCompositePathResponseArrayOutputWithContext(ctx context.Context) CompositePathResponseArrayOutput {
	return o
}

func (o CompositePathResponseArrayOutput) Index(i pulumi.IntInput) CompositePathResponseOutput {
	return pulumi.All(o, i).ApplyT(func(vs []interface{}) CompositePathResponse {
		return vs[0].([]CompositePathResponse)[vs[1].(int)]
	}).(CompositePathResponseOutput)
}

// Cosmos DB indexing policy
type IndexingPolicyResponse struct {
	// List of composite path list
	CompositeIndexes [][]CompositePathResponse `pulumi:"compositeIndexes"`
}

// Cosmos DB indexing policy
type IndexingPolicyResponseOutput struct{ *pulumi.OutputState }

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

func (o IndexingPolicyResponseOutput) ToIndexingPolicyResponseOutput() IndexingPolicyResponseOutput {
	return o
}

func (o IndexingPolicyResponseOutput) ToIndexingPolicyResponseOutputWithContext(ctx context.Context) IndexingPolicyResponseOutput {
	return o
}

// List of composite path list
func (o IndexingPolicyResponseOutput) CompositeIndexes() CompositePathResponseArrayArrayOutput {
	return o.ApplyT(func(v IndexingPolicyResponse) [][]CompositePathResponse { return v.CompositeIndexes }).(CompositePathResponseArrayArrayOutput)
}

type IndexingPolicyResponsePtrOutput struct{ *pulumi.OutputState }

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

func (o IndexingPolicyResponsePtrOutput) ToIndexingPolicyResponsePtrOutput() IndexingPolicyResponsePtrOutput {
	return o
}

func (o IndexingPolicyResponsePtrOutput) ToIndexingPolicyResponsePtrOutputWithContext(ctx context.Context) IndexingPolicyResponsePtrOutput {
	return o
}

func (o IndexingPolicyResponsePtrOutput) Elem() IndexingPolicyResponseOutput {
	return o.ApplyT(func(v *IndexingPolicyResponse) IndexingPolicyResponse {
		if v != nil {
			return *v
		}
		var ret IndexingPolicyResponse
		return ret
	}).(IndexingPolicyResponseOutput)
}

// List of composite path list
func (o IndexingPolicyResponsePtrOutput) CompositeIndexes() CompositePathResponseArrayArrayOutput {
	return o.ApplyT(func(v *IndexingPolicyResponse) [][]CompositePathResponse {
		if v == nil {
			return nil
		}
		return v.CompositeIndexes
	}).(CompositePathResponseArrayArrayOutput)
}

type SqlContainerGetPropertiesResponseResource struct {
	// The configuration of the indexing policy. By default, the indexing is automatic for all document paths within the container
	IndexingPolicy *IndexingPolicyResponse `pulumi:"indexingPolicy"`
}

type SqlContainerGetPropertiesResponseResourceOutput struct{ *pulumi.OutputState }

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

func (o SqlContainerGetPropertiesResponseResourceOutput) ToSqlContainerGetPropertiesResponseResourceOutput() SqlContainerGetPropertiesResponseResourceOutput {
	return o
}

func (o SqlContainerGetPropertiesResponseResourceOutput) ToSqlContainerGetPropertiesResponseResourceOutputWithContext(ctx context.Context) SqlContainerGetPropertiesResponseResourceOutput {
	return o
}

// The configuration of the indexing policy. By default, the indexing is automatic for all document paths within the container
func (o SqlContainerGetPropertiesResponseResourceOutput) IndexingPolicy() IndexingPolicyResponsePtrOutput {
	return o.ApplyT(func(v SqlContainerGetPropertiesResponseResource) *IndexingPolicyResponse { return v.IndexingPolicy }).(IndexingPolicyResponsePtrOutput)
}

type SqlContainerGetPropertiesResponseResourcePtrOutput struct{ *pulumi.OutputState }

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

func (o SqlContainerGetPropertiesResponseResourcePtrOutput) ToSqlContainerGetPropertiesResponseResourcePtrOutput() SqlContainerGetPropertiesResponseResourcePtrOutput {
	return o
}

func (o SqlContainerGetPropertiesResponseResourcePtrOutput) ToSqlContainerGetPropertiesResponseResourcePtrOutputWithContext(ctx context.Context) SqlContainerGetPropertiesResponseResourcePtrOutput {
	return o
}

func (o SqlContainerGetPropertiesResponseResourcePtrOutput) Elem() SqlContainerGetPropertiesResponseResourceOutput {
	return o.ApplyT(func(v *SqlContainerGetPropertiesResponseResource) SqlContainerGetPropertiesResponseResource {
		if v != nil {
			return *v
		}
		var ret SqlContainerGetPropertiesResponseResource
		return ret
	}).(SqlContainerGetPropertiesResponseResourceOutput)
}

// The configuration of the indexing policy. By default, the indexing is automatic for all document paths within the container
func (o SqlContainerGetPropertiesResponseResourcePtrOutput) IndexingPolicy() IndexingPolicyResponsePtrOutput {
	return o.ApplyT(func(v *SqlContainerGetPropertiesResponseResource) *IndexingPolicyResponse {
		if v == nil {
			return nil
		}
		return v.IndexingPolicy
	}).(IndexingPolicyResponsePtrOutput)
}

type CompositePathResponseArrayArrayOutput struct{ *pulumi.OutputState }

func (CompositePathResponseArrayArrayOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*[][]CompositePathResponse)(nil)).Elem()
}

func (o CompositePathResponseArrayArrayOutput) ToCompositePathResponseArrayArrayOutput() CompositePathResponseArrayArrayOutput {
	return o
}

func (o CompositePathResponseArrayArrayOutput) ToCompositePathResponseArrayArrayOutputWithContext(ctx context.Context) CompositePathResponseArrayArrayOutput {
	return o
}

func (o CompositePathResponseArrayArrayOutput) Index(i pulumi.IntInput) CompositePathResponseArrayOutput {
	return pulumi.All(o, i).ApplyT(func(vs []interface{}) []CompositePathResponse {
		return vs[0].([][]CompositePathResponse)[vs[1].(int)]
	}).(CompositePathResponseArrayOutput)
}

func init() {
	pulumi.RegisterOutputType(CompositePathResponseOutput{})
	pulumi.RegisterOutputType(CompositePathResponseArrayOutput{})
	pulumi.RegisterOutputType(IndexingPolicyResponseOutput{})
	pulumi.RegisterOutputType(IndexingPolicyResponsePtrOutput{})
	pulumi.RegisterOutputType(SqlContainerGetPropertiesResponseResourceOutput{})
	pulumi.RegisterOutputType(SqlContainerGetPropertiesResponseResourcePtrOutput{})
	pulumi.RegisterOutputType(CompositePathResponseArrayArrayOutput{})
}
