// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.

package provider

import (
	tfTypes "github.com/airbytehq/terraform-provider-airbyte/internal/provider/types"
	"github.com/airbytehq/terraform-provider-airbyte/internal/sdk/models/shared"
	"github.com/hashicorp/terraform-plugin-framework/types"
)

func (r *DestinationMilvusResourceModel) ToSharedDestinationMilvusCreateRequest() *shared.DestinationMilvusCreateRequest {
	var name string
	name = r.Name.ValueString()

	definitionID := new(string)
	if !r.DefinitionID.IsUnknown() && !r.DefinitionID.IsNull() {
		*definitionID = r.DefinitionID.ValueString()
	} else {
		definitionID = nil
	}
	var workspaceID string
	workspaceID = r.WorkspaceID.ValueString()

	var embedding shared.DestinationMilvusEmbedding
	var destinationMilvusOpenAI *shared.DestinationMilvusOpenAI
	if r.Configuration.Embedding.OpenAI != nil {
		var openaiKey string
		openaiKey = r.Configuration.Embedding.OpenAI.OpenaiKey.ValueString()

		destinationMilvusOpenAI = &shared.DestinationMilvusOpenAI{
			OpenaiKey: openaiKey,
		}
	}
	if destinationMilvusOpenAI != nil {
		embedding = shared.DestinationMilvusEmbedding{
			DestinationMilvusOpenAI: destinationMilvusOpenAI,
		}
	}
	var destinationMilvusCohere *shared.DestinationMilvusCohere
	if r.Configuration.Embedding.Cohere != nil {
		var cohereKey string
		cohereKey = r.Configuration.Embedding.Cohere.CohereKey.ValueString()

		destinationMilvusCohere = &shared.DestinationMilvusCohere{
			CohereKey: cohereKey,
		}
	}
	if destinationMilvusCohere != nil {
		embedding = shared.DestinationMilvusEmbedding{
			DestinationMilvusCohere: destinationMilvusCohere,
		}
	}
	var destinationMilvusFake *shared.DestinationMilvusFake
	if r.Configuration.Embedding.Fake != nil {
		destinationMilvusFake = &shared.DestinationMilvusFake{}
	}
	if destinationMilvusFake != nil {
		embedding = shared.DestinationMilvusEmbedding{
			DestinationMilvusFake: destinationMilvusFake,
		}
	}
	var destinationMilvusAzureOpenAI *shared.DestinationMilvusAzureOpenAI
	if r.Configuration.Embedding.AzureOpenAI != nil {
		var apiBase string
		apiBase = r.Configuration.Embedding.AzureOpenAI.APIBase.ValueString()

		var deployment string
		deployment = r.Configuration.Embedding.AzureOpenAI.Deployment.ValueString()

		var openaiKey1 string
		openaiKey1 = r.Configuration.Embedding.AzureOpenAI.OpenaiKey.ValueString()

		destinationMilvusAzureOpenAI = &shared.DestinationMilvusAzureOpenAI{
			APIBase:    apiBase,
			Deployment: deployment,
			OpenaiKey:  openaiKey1,
		}
	}
	if destinationMilvusAzureOpenAI != nil {
		embedding = shared.DestinationMilvusEmbedding{
			DestinationMilvusAzureOpenAI: destinationMilvusAzureOpenAI,
		}
	}
	var destinationMilvusOpenAICompatible *shared.DestinationMilvusOpenAICompatible
	if r.Configuration.Embedding.OpenAICompatible != nil {
		apiKey := new(string)
		if !r.Configuration.Embedding.OpenAICompatible.APIKey.IsUnknown() && !r.Configuration.Embedding.OpenAICompatible.APIKey.IsNull() {
			*apiKey = r.Configuration.Embedding.OpenAICompatible.APIKey.ValueString()
		} else {
			apiKey = nil
		}
		var baseURL string
		baseURL = r.Configuration.Embedding.OpenAICompatible.BaseURL.ValueString()

		var dimensions int64
		dimensions = r.Configuration.Embedding.OpenAICompatible.Dimensions.ValueInt64()

		modelName := new(string)
		if !r.Configuration.Embedding.OpenAICompatible.ModelName.IsUnknown() && !r.Configuration.Embedding.OpenAICompatible.ModelName.IsNull() {
			*modelName = r.Configuration.Embedding.OpenAICompatible.ModelName.ValueString()
		} else {
			modelName = nil
		}
		destinationMilvusOpenAICompatible = &shared.DestinationMilvusOpenAICompatible{
			APIKey:     apiKey,
			BaseURL:    baseURL,
			Dimensions: dimensions,
			ModelName:  modelName,
		}
	}
	if destinationMilvusOpenAICompatible != nil {
		embedding = shared.DestinationMilvusEmbedding{
			DestinationMilvusOpenAICompatible: destinationMilvusOpenAICompatible,
		}
	}
	var auth shared.DestinationMilvusAuthentication
	var destinationMilvusAPIToken *shared.DestinationMilvusAPIToken
	if r.Configuration.Indexing.Auth.APIToken != nil {
		var token string
		token = r.Configuration.Indexing.Auth.APIToken.Token.ValueString()

		destinationMilvusAPIToken = &shared.DestinationMilvusAPIToken{
			Token: token,
		}
	}
	if destinationMilvusAPIToken != nil {
		auth = shared.DestinationMilvusAuthentication{
			DestinationMilvusAPIToken: destinationMilvusAPIToken,
		}
	}
	var destinationMilvusUsernamePassword *shared.DestinationMilvusUsernamePassword
	if r.Configuration.Indexing.Auth.UsernamePassword != nil {
		var password string
		password = r.Configuration.Indexing.Auth.UsernamePassword.Password.ValueString()

		var username string
		username = r.Configuration.Indexing.Auth.UsernamePassword.Username.ValueString()

		destinationMilvusUsernamePassword = &shared.DestinationMilvusUsernamePassword{
			Password: password,
			Username: username,
		}
	}
	if destinationMilvusUsernamePassword != nil {
		auth = shared.DestinationMilvusAuthentication{
			DestinationMilvusUsernamePassword: destinationMilvusUsernamePassword,
		}
	}
	var noAuth *shared.NoAuth
	if r.Configuration.Indexing.Auth.NoAuth != nil {
		noAuth = &shared.NoAuth{}
	}
	if noAuth != nil {
		auth = shared.DestinationMilvusAuthentication{
			NoAuth: noAuth,
		}
	}
	var collection string
	collection = r.Configuration.Indexing.Collection.ValueString()

	db := new(string)
	if !r.Configuration.Indexing.Db.IsUnknown() && !r.Configuration.Indexing.Db.IsNull() {
		*db = r.Configuration.Indexing.Db.ValueString()
	} else {
		db = nil
	}
	var host string
	host = r.Configuration.Indexing.Host.ValueString()

	textField := new(string)
	if !r.Configuration.Indexing.TextField.IsUnknown() && !r.Configuration.Indexing.TextField.IsNull() {
		*textField = r.Configuration.Indexing.TextField.ValueString()
	} else {
		textField = nil
	}
	vectorField := new(string)
	if !r.Configuration.Indexing.VectorField.IsUnknown() && !r.Configuration.Indexing.VectorField.IsNull() {
		*vectorField = r.Configuration.Indexing.VectorField.ValueString()
	} else {
		vectorField = nil
	}
	indexing := shared.DestinationMilvusIndexing{
		Auth:        auth,
		Collection:  collection,
		Db:          db,
		Host:        host,
		TextField:   textField,
		VectorField: vectorField,
	}
	omitRawText := new(bool)
	if !r.Configuration.OmitRawText.IsUnknown() && !r.Configuration.OmitRawText.IsNull() {
		*omitRawText = r.Configuration.OmitRawText.ValueBool()
	} else {
		omitRawText = nil
	}
	chunkOverlap := new(int64)
	if !r.Configuration.Processing.ChunkOverlap.IsUnknown() && !r.Configuration.Processing.ChunkOverlap.IsNull() {
		*chunkOverlap = r.Configuration.Processing.ChunkOverlap.ValueInt64()
	} else {
		chunkOverlap = nil
	}
	var chunkSize int64
	chunkSize = r.Configuration.Processing.ChunkSize.ValueInt64()

	var fieldNameMappings []shared.DestinationMilvusFieldNameMappingConfigModel = []shared.DestinationMilvusFieldNameMappingConfigModel{}
	for _, fieldNameMappingsItem := range r.Configuration.Processing.FieldNameMappings {
		var fromField string
		fromField = fieldNameMappingsItem.FromField.ValueString()

		var toField string
		toField = fieldNameMappingsItem.ToField.ValueString()

		fieldNameMappings = append(fieldNameMappings, shared.DestinationMilvusFieldNameMappingConfigModel{
			FromField: fromField,
			ToField:   toField,
		})
	}
	var metadataFields []string = []string{}
	for _, metadataFieldsItem := range r.Configuration.Processing.MetadataFields {
		metadataFields = append(metadataFields, metadataFieldsItem.ValueString())
	}
	var textFields []string = []string{}
	for _, textFieldsItem := range r.Configuration.Processing.TextFields {
		textFields = append(textFields, textFieldsItem.ValueString())
	}
	var textSplitter *shared.DestinationMilvusTextSplitter
	if r.Configuration.Processing.TextSplitter != nil {
		var destinationMilvusBySeparator *shared.DestinationMilvusBySeparator
		if r.Configuration.Processing.TextSplitter.BySeparator != nil {
			keepSeparator := new(bool)
			if !r.Configuration.Processing.TextSplitter.BySeparator.KeepSeparator.IsUnknown() && !r.Configuration.Processing.TextSplitter.BySeparator.KeepSeparator.IsNull() {
				*keepSeparator = r.Configuration.Processing.TextSplitter.BySeparator.KeepSeparator.ValueBool()
			} else {
				keepSeparator = nil
			}
			var separators []string = []string{}
			for _, separatorsItem := range r.Configuration.Processing.TextSplitter.BySeparator.Separators {
				separators = append(separators, separatorsItem.ValueString())
			}
			destinationMilvusBySeparator = &shared.DestinationMilvusBySeparator{
				KeepSeparator: keepSeparator,
				Separators:    separators,
			}
		}
		if destinationMilvusBySeparator != nil {
			textSplitter = &shared.DestinationMilvusTextSplitter{
				DestinationMilvusBySeparator: destinationMilvusBySeparator,
			}
		}
		var destinationMilvusByMarkdownHeader *shared.DestinationMilvusByMarkdownHeader
		if r.Configuration.Processing.TextSplitter.ByMarkdownHeader != nil {
			splitLevel := new(int64)
			if !r.Configuration.Processing.TextSplitter.ByMarkdownHeader.SplitLevel.IsUnknown() && !r.Configuration.Processing.TextSplitter.ByMarkdownHeader.SplitLevel.IsNull() {
				*splitLevel = r.Configuration.Processing.TextSplitter.ByMarkdownHeader.SplitLevel.ValueInt64()
			} else {
				splitLevel = nil
			}
			destinationMilvusByMarkdownHeader = &shared.DestinationMilvusByMarkdownHeader{
				SplitLevel: splitLevel,
			}
		}
		if destinationMilvusByMarkdownHeader != nil {
			textSplitter = &shared.DestinationMilvusTextSplitter{
				DestinationMilvusByMarkdownHeader: destinationMilvusByMarkdownHeader,
			}
		}
		var destinationMilvusByProgrammingLanguage *shared.DestinationMilvusByProgrammingLanguage
		if r.Configuration.Processing.TextSplitter.ByProgrammingLanguage != nil {
			language := shared.DestinationMilvusLanguage(r.Configuration.Processing.TextSplitter.ByProgrammingLanguage.Language.ValueString())
			destinationMilvusByProgrammingLanguage = &shared.DestinationMilvusByProgrammingLanguage{
				Language: language,
			}
		}
		if destinationMilvusByProgrammingLanguage != nil {
			textSplitter = &shared.DestinationMilvusTextSplitter{
				DestinationMilvusByProgrammingLanguage: destinationMilvusByProgrammingLanguage,
			}
		}
	}
	processing := shared.DestinationMilvusProcessingConfigModel{
		ChunkOverlap:      chunkOverlap,
		ChunkSize:         chunkSize,
		FieldNameMappings: fieldNameMappings,
		MetadataFields:    metadataFields,
		TextFields:        textFields,
		TextSplitter:      textSplitter,
	}
	configuration := shared.DestinationMilvus{
		Embedding:   embedding,
		Indexing:    indexing,
		OmitRawText: omitRawText,
		Processing:  processing,
	}
	out := shared.DestinationMilvusCreateRequest{
		Name:          name,
		DefinitionID:  definitionID,
		WorkspaceID:   workspaceID,
		Configuration: configuration,
	}
	return &out
}

func (r *DestinationMilvusResourceModel) RefreshFromSharedDestinationResponse(resp *shared.DestinationResponse) {
	if resp != nil {
		r.CreatedAt = types.Int64Value(resp.CreatedAt)
		r.DefinitionID = types.StringValue(resp.DefinitionID)
		r.DestinationID = types.StringValue(resp.DestinationID)
		r.DestinationType = types.StringValue(resp.DestinationType)
		r.Name = types.StringValue(resp.Name)
		if resp.ResourceAllocation == nil {
			r.ResourceAllocation = nil
		} else {
			r.ResourceAllocation = &tfTypes.ScopedResourceRequirements{}
			if resp.ResourceAllocation.Default == nil {
				r.ResourceAllocation.Default = nil
			} else {
				r.ResourceAllocation.Default = &tfTypes.ResourceRequirements{}
				r.ResourceAllocation.Default.CPULimit = types.StringPointerValue(resp.ResourceAllocation.Default.CPULimit)
				r.ResourceAllocation.Default.CPURequest = types.StringPointerValue(resp.ResourceAllocation.Default.CPURequest)
				r.ResourceAllocation.Default.EphemeralStorageLimit = types.StringPointerValue(resp.ResourceAllocation.Default.EphemeralStorageLimit)
				r.ResourceAllocation.Default.EphemeralStorageRequest = types.StringPointerValue(resp.ResourceAllocation.Default.EphemeralStorageRequest)
				r.ResourceAllocation.Default.MemoryLimit = types.StringPointerValue(resp.ResourceAllocation.Default.MemoryLimit)
				r.ResourceAllocation.Default.MemoryRequest = types.StringPointerValue(resp.ResourceAllocation.Default.MemoryRequest)
			}
			r.ResourceAllocation.JobSpecific = []tfTypes.JobTypeResourceLimit{}
			if len(r.ResourceAllocation.JobSpecific) > len(resp.ResourceAllocation.JobSpecific) {
				r.ResourceAllocation.JobSpecific = r.ResourceAllocation.JobSpecific[:len(resp.ResourceAllocation.JobSpecific)]
			}
			for jobSpecificCount, jobSpecificItem := range resp.ResourceAllocation.JobSpecific {
				var jobSpecific1 tfTypes.JobTypeResourceLimit
				jobSpecific1.JobType = types.StringValue(string(jobSpecificItem.JobType))
				jobSpecific1.ResourceRequirements.CPULimit = types.StringPointerValue(jobSpecificItem.ResourceRequirements.CPULimit)
				jobSpecific1.ResourceRequirements.CPURequest = types.StringPointerValue(jobSpecificItem.ResourceRequirements.CPURequest)
				jobSpecific1.ResourceRequirements.EphemeralStorageLimit = types.StringPointerValue(jobSpecificItem.ResourceRequirements.EphemeralStorageLimit)
				jobSpecific1.ResourceRequirements.EphemeralStorageRequest = types.StringPointerValue(jobSpecificItem.ResourceRequirements.EphemeralStorageRequest)
				jobSpecific1.ResourceRequirements.MemoryLimit = types.StringPointerValue(jobSpecificItem.ResourceRequirements.MemoryLimit)
				jobSpecific1.ResourceRequirements.MemoryRequest = types.StringPointerValue(jobSpecificItem.ResourceRequirements.MemoryRequest)
				if jobSpecificCount+1 > len(r.ResourceAllocation.JobSpecific) {
					r.ResourceAllocation.JobSpecific = append(r.ResourceAllocation.JobSpecific, jobSpecific1)
				} else {
					r.ResourceAllocation.JobSpecific[jobSpecificCount].JobType = jobSpecific1.JobType
					r.ResourceAllocation.JobSpecific[jobSpecificCount].ResourceRequirements = jobSpecific1.ResourceRequirements
				}
			}
		}
		r.WorkspaceID = types.StringValue(resp.WorkspaceID)
	}
}

func (r *DestinationMilvusResourceModel) ToSharedDestinationMilvusPutRequest() *shared.DestinationMilvusPutRequest {
	var name string
	name = r.Name.ValueString()

	var workspaceID string
	workspaceID = r.WorkspaceID.ValueString()

	var embedding shared.DestinationMilvusUpdateEmbedding
	var destinationMilvusUpdateOpenAI *shared.DestinationMilvusUpdateOpenAI
	if r.Configuration.Embedding.OpenAI != nil {
		var openaiKey string
		openaiKey = r.Configuration.Embedding.OpenAI.OpenaiKey.ValueString()

		destinationMilvusUpdateOpenAI = &shared.DestinationMilvusUpdateOpenAI{
			OpenaiKey: openaiKey,
		}
	}
	if destinationMilvusUpdateOpenAI != nil {
		embedding = shared.DestinationMilvusUpdateEmbedding{
			DestinationMilvusUpdateOpenAI: destinationMilvusUpdateOpenAI,
		}
	}
	var destinationMilvusUpdateCohere *shared.DestinationMilvusUpdateCohere
	if r.Configuration.Embedding.Cohere != nil {
		var cohereKey string
		cohereKey = r.Configuration.Embedding.Cohere.CohereKey.ValueString()

		destinationMilvusUpdateCohere = &shared.DestinationMilvusUpdateCohere{
			CohereKey: cohereKey,
		}
	}
	if destinationMilvusUpdateCohere != nil {
		embedding = shared.DestinationMilvusUpdateEmbedding{
			DestinationMilvusUpdateCohere: destinationMilvusUpdateCohere,
		}
	}
	var destinationMilvusUpdateFake *shared.DestinationMilvusUpdateFake
	if r.Configuration.Embedding.Fake != nil {
		destinationMilvusUpdateFake = &shared.DestinationMilvusUpdateFake{}
	}
	if destinationMilvusUpdateFake != nil {
		embedding = shared.DestinationMilvusUpdateEmbedding{
			DestinationMilvusUpdateFake: destinationMilvusUpdateFake,
		}
	}
	var destinationMilvusUpdateAzureOpenAI *shared.DestinationMilvusUpdateAzureOpenAI
	if r.Configuration.Embedding.AzureOpenAI != nil {
		var apiBase string
		apiBase = r.Configuration.Embedding.AzureOpenAI.APIBase.ValueString()

		var deployment string
		deployment = r.Configuration.Embedding.AzureOpenAI.Deployment.ValueString()

		var openaiKey1 string
		openaiKey1 = r.Configuration.Embedding.AzureOpenAI.OpenaiKey.ValueString()

		destinationMilvusUpdateAzureOpenAI = &shared.DestinationMilvusUpdateAzureOpenAI{
			APIBase:    apiBase,
			Deployment: deployment,
			OpenaiKey:  openaiKey1,
		}
	}
	if destinationMilvusUpdateAzureOpenAI != nil {
		embedding = shared.DestinationMilvusUpdateEmbedding{
			DestinationMilvusUpdateAzureOpenAI: destinationMilvusUpdateAzureOpenAI,
		}
	}
	var destinationMilvusUpdateOpenAICompatible *shared.DestinationMilvusUpdateOpenAICompatible
	if r.Configuration.Embedding.OpenAICompatible != nil {
		apiKey := new(string)
		if !r.Configuration.Embedding.OpenAICompatible.APIKey.IsUnknown() && !r.Configuration.Embedding.OpenAICompatible.APIKey.IsNull() {
			*apiKey = r.Configuration.Embedding.OpenAICompatible.APIKey.ValueString()
		} else {
			apiKey = nil
		}
		var baseURL string
		baseURL = r.Configuration.Embedding.OpenAICompatible.BaseURL.ValueString()

		var dimensions int64
		dimensions = r.Configuration.Embedding.OpenAICompatible.Dimensions.ValueInt64()

		modelName := new(string)
		if !r.Configuration.Embedding.OpenAICompatible.ModelName.IsUnknown() && !r.Configuration.Embedding.OpenAICompatible.ModelName.IsNull() {
			*modelName = r.Configuration.Embedding.OpenAICompatible.ModelName.ValueString()
		} else {
			modelName = nil
		}
		destinationMilvusUpdateOpenAICompatible = &shared.DestinationMilvusUpdateOpenAICompatible{
			APIKey:     apiKey,
			BaseURL:    baseURL,
			Dimensions: dimensions,
			ModelName:  modelName,
		}
	}
	if destinationMilvusUpdateOpenAICompatible != nil {
		embedding = shared.DestinationMilvusUpdateEmbedding{
			DestinationMilvusUpdateOpenAICompatible: destinationMilvusUpdateOpenAICompatible,
		}
	}
	var auth shared.DestinationMilvusUpdateAuthentication
	var destinationMilvusUpdateAPIToken *shared.DestinationMilvusUpdateAPIToken
	if r.Configuration.Indexing.Auth.APIToken != nil {
		var token string
		token = r.Configuration.Indexing.Auth.APIToken.Token.ValueString()

		destinationMilvusUpdateAPIToken = &shared.DestinationMilvusUpdateAPIToken{
			Token: token,
		}
	}
	if destinationMilvusUpdateAPIToken != nil {
		auth = shared.DestinationMilvusUpdateAuthentication{
			DestinationMilvusUpdateAPIToken: destinationMilvusUpdateAPIToken,
		}
	}
	var destinationMilvusUpdateUsernamePassword *shared.DestinationMilvusUpdateUsernamePassword
	if r.Configuration.Indexing.Auth.UsernamePassword != nil {
		var password string
		password = r.Configuration.Indexing.Auth.UsernamePassword.Password.ValueString()

		var username string
		username = r.Configuration.Indexing.Auth.UsernamePassword.Username.ValueString()

		destinationMilvusUpdateUsernamePassword = &shared.DestinationMilvusUpdateUsernamePassword{
			Password: password,
			Username: username,
		}
	}
	if destinationMilvusUpdateUsernamePassword != nil {
		auth = shared.DestinationMilvusUpdateAuthentication{
			DestinationMilvusUpdateUsernamePassword: destinationMilvusUpdateUsernamePassword,
		}
	}
	var destinationMilvusUpdateNoAuth *shared.DestinationMilvusUpdateNoAuth
	if r.Configuration.Indexing.Auth.NoAuth != nil {
		destinationMilvusUpdateNoAuth = &shared.DestinationMilvusUpdateNoAuth{}
	}
	if destinationMilvusUpdateNoAuth != nil {
		auth = shared.DestinationMilvusUpdateAuthentication{
			DestinationMilvusUpdateNoAuth: destinationMilvusUpdateNoAuth,
		}
	}
	var collection string
	collection = r.Configuration.Indexing.Collection.ValueString()

	db := new(string)
	if !r.Configuration.Indexing.Db.IsUnknown() && !r.Configuration.Indexing.Db.IsNull() {
		*db = r.Configuration.Indexing.Db.ValueString()
	} else {
		db = nil
	}
	var host string
	host = r.Configuration.Indexing.Host.ValueString()

	textField := new(string)
	if !r.Configuration.Indexing.TextField.IsUnknown() && !r.Configuration.Indexing.TextField.IsNull() {
		*textField = r.Configuration.Indexing.TextField.ValueString()
	} else {
		textField = nil
	}
	vectorField := new(string)
	if !r.Configuration.Indexing.VectorField.IsUnknown() && !r.Configuration.Indexing.VectorField.IsNull() {
		*vectorField = r.Configuration.Indexing.VectorField.ValueString()
	} else {
		vectorField = nil
	}
	indexing := shared.DestinationMilvusUpdateIndexing{
		Auth:        auth,
		Collection:  collection,
		Db:          db,
		Host:        host,
		TextField:   textField,
		VectorField: vectorField,
	}
	omitRawText := new(bool)
	if !r.Configuration.OmitRawText.IsUnknown() && !r.Configuration.OmitRawText.IsNull() {
		*omitRawText = r.Configuration.OmitRawText.ValueBool()
	} else {
		omitRawText = nil
	}
	chunkOverlap := new(int64)
	if !r.Configuration.Processing.ChunkOverlap.IsUnknown() && !r.Configuration.Processing.ChunkOverlap.IsNull() {
		*chunkOverlap = r.Configuration.Processing.ChunkOverlap.ValueInt64()
	} else {
		chunkOverlap = nil
	}
	var chunkSize int64
	chunkSize = r.Configuration.Processing.ChunkSize.ValueInt64()

	var fieldNameMappings []shared.DestinationMilvusUpdateFieldNameMappingConfigModel = []shared.DestinationMilvusUpdateFieldNameMappingConfigModel{}
	for _, fieldNameMappingsItem := range r.Configuration.Processing.FieldNameMappings {
		var fromField string
		fromField = fieldNameMappingsItem.FromField.ValueString()

		var toField string
		toField = fieldNameMappingsItem.ToField.ValueString()

		fieldNameMappings = append(fieldNameMappings, shared.DestinationMilvusUpdateFieldNameMappingConfigModel{
			FromField: fromField,
			ToField:   toField,
		})
	}
	var metadataFields []string = []string{}
	for _, metadataFieldsItem := range r.Configuration.Processing.MetadataFields {
		metadataFields = append(metadataFields, metadataFieldsItem.ValueString())
	}
	var textFields []string = []string{}
	for _, textFieldsItem := range r.Configuration.Processing.TextFields {
		textFields = append(textFields, textFieldsItem.ValueString())
	}
	var textSplitter *shared.DestinationMilvusUpdateTextSplitter
	if r.Configuration.Processing.TextSplitter != nil {
		var destinationMilvusUpdateBySeparator *shared.DestinationMilvusUpdateBySeparator
		if r.Configuration.Processing.TextSplitter.BySeparator != nil {
			keepSeparator := new(bool)
			if !r.Configuration.Processing.TextSplitter.BySeparator.KeepSeparator.IsUnknown() && !r.Configuration.Processing.TextSplitter.BySeparator.KeepSeparator.IsNull() {
				*keepSeparator = r.Configuration.Processing.TextSplitter.BySeparator.KeepSeparator.ValueBool()
			} else {
				keepSeparator = nil
			}
			var separators []string = []string{}
			for _, separatorsItem := range r.Configuration.Processing.TextSplitter.BySeparator.Separators {
				separators = append(separators, separatorsItem.ValueString())
			}
			destinationMilvusUpdateBySeparator = &shared.DestinationMilvusUpdateBySeparator{
				KeepSeparator: keepSeparator,
				Separators:    separators,
			}
		}
		if destinationMilvusUpdateBySeparator != nil {
			textSplitter = &shared.DestinationMilvusUpdateTextSplitter{
				DestinationMilvusUpdateBySeparator: destinationMilvusUpdateBySeparator,
			}
		}
		var destinationMilvusUpdateByMarkdownHeader *shared.DestinationMilvusUpdateByMarkdownHeader
		if r.Configuration.Processing.TextSplitter.ByMarkdownHeader != nil {
			splitLevel := new(int64)
			if !r.Configuration.Processing.TextSplitter.ByMarkdownHeader.SplitLevel.IsUnknown() && !r.Configuration.Processing.TextSplitter.ByMarkdownHeader.SplitLevel.IsNull() {
				*splitLevel = r.Configuration.Processing.TextSplitter.ByMarkdownHeader.SplitLevel.ValueInt64()
			} else {
				splitLevel = nil
			}
			destinationMilvusUpdateByMarkdownHeader = &shared.DestinationMilvusUpdateByMarkdownHeader{
				SplitLevel: splitLevel,
			}
		}
		if destinationMilvusUpdateByMarkdownHeader != nil {
			textSplitter = &shared.DestinationMilvusUpdateTextSplitter{
				DestinationMilvusUpdateByMarkdownHeader: destinationMilvusUpdateByMarkdownHeader,
			}
		}
		var destinationMilvusUpdateByProgrammingLanguage *shared.DestinationMilvusUpdateByProgrammingLanguage
		if r.Configuration.Processing.TextSplitter.ByProgrammingLanguage != nil {
			language := shared.DestinationMilvusUpdateLanguage(r.Configuration.Processing.TextSplitter.ByProgrammingLanguage.Language.ValueString())
			destinationMilvusUpdateByProgrammingLanguage = &shared.DestinationMilvusUpdateByProgrammingLanguage{
				Language: language,
			}
		}
		if destinationMilvusUpdateByProgrammingLanguage != nil {
			textSplitter = &shared.DestinationMilvusUpdateTextSplitter{
				DestinationMilvusUpdateByProgrammingLanguage: destinationMilvusUpdateByProgrammingLanguage,
			}
		}
	}
	processing := shared.DestinationMilvusUpdateProcessingConfigModel{
		ChunkOverlap:      chunkOverlap,
		ChunkSize:         chunkSize,
		FieldNameMappings: fieldNameMappings,
		MetadataFields:    metadataFields,
		TextFields:        textFields,
		TextSplitter:      textSplitter,
	}
	configuration := shared.DestinationMilvusUpdate{
		Embedding:   embedding,
		Indexing:    indexing,
		OmitRawText: omitRawText,
		Processing:  processing,
	}
	out := shared.DestinationMilvusPutRequest{
		Name:          name,
		WorkspaceID:   workspaceID,
		Configuration: configuration,
	}
	return &out
}
