// 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 *DestinationPgvectorResourceModel) ToSharedDestinationPgvectorCreateRequest() *shared.DestinationPgvectorCreateRequest {
	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.DestinationPgvectorEmbedding
	var destinationPgvectorOpenAI *shared.DestinationPgvectorOpenAI
	if r.Configuration.Embedding.OpenAI != nil {
		var openaiKey string
		openaiKey = r.Configuration.Embedding.OpenAI.OpenaiKey.ValueString()

		destinationPgvectorOpenAI = &shared.DestinationPgvectorOpenAI{
			OpenaiKey: openaiKey,
		}
	}
	if destinationPgvectorOpenAI != nil {
		embedding = shared.DestinationPgvectorEmbedding{
			DestinationPgvectorOpenAI: destinationPgvectorOpenAI,
		}
	}
	var destinationPgvectorCohere *shared.DestinationPgvectorCohere
	if r.Configuration.Embedding.Cohere != nil {
		var cohereKey string
		cohereKey = r.Configuration.Embedding.Cohere.CohereKey.ValueString()

		destinationPgvectorCohere = &shared.DestinationPgvectorCohere{
			CohereKey: cohereKey,
		}
	}
	if destinationPgvectorCohere != nil {
		embedding = shared.DestinationPgvectorEmbedding{
			DestinationPgvectorCohere: destinationPgvectorCohere,
		}
	}
	var destinationPgvectorFake *shared.DestinationPgvectorFake
	if r.Configuration.Embedding.Fake != nil {
		destinationPgvectorFake = &shared.DestinationPgvectorFake{}
	}
	if destinationPgvectorFake != nil {
		embedding = shared.DestinationPgvectorEmbedding{
			DestinationPgvectorFake: destinationPgvectorFake,
		}
	}
	var destinationPgvectorAzureOpenAI *shared.DestinationPgvectorAzureOpenAI
	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()

		destinationPgvectorAzureOpenAI = &shared.DestinationPgvectorAzureOpenAI{
			APIBase:    apiBase,
			Deployment: deployment,
			OpenaiKey:  openaiKey1,
		}
	}
	if destinationPgvectorAzureOpenAI != nil {
		embedding = shared.DestinationPgvectorEmbedding{
			DestinationPgvectorAzureOpenAI: destinationPgvectorAzureOpenAI,
		}
	}
	var destinationPgvectorOpenAICompatible *shared.DestinationPgvectorOpenAICompatible
	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
		}
		destinationPgvectorOpenAICompatible = &shared.DestinationPgvectorOpenAICompatible{
			APIKey:     apiKey,
			BaseURL:    baseURL,
			Dimensions: dimensions,
			ModelName:  modelName,
		}
	}
	if destinationPgvectorOpenAICompatible != nil {
		embedding = shared.DestinationPgvectorEmbedding{
			DestinationPgvectorOpenAICompatible: destinationPgvectorOpenAICompatible,
		}
	}
	var password string
	password = r.Configuration.Indexing.Credentials.Password.ValueString()

	credentials := shared.DestinationPgvectorCredentials{
		Password: password,
	}
	var database string
	database = r.Configuration.Indexing.Database.ValueString()

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

	port := new(int64)
	if !r.Configuration.Indexing.Port.IsUnknown() && !r.Configuration.Indexing.Port.IsNull() {
		*port = r.Configuration.Indexing.Port.ValueInt64()
	} else {
		port = nil
	}
	var username string
	username = r.Configuration.Indexing.Username.ValueString()

	indexing := shared.PostgresConnection{
		Credentials:   credentials,
		Database:      database,
		DefaultSchema: defaultSchema,
		Host:          host,
		Port:          port,
		Username:      username,
	}
	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.DestinationPgvectorFieldNameMappingConfigModel = []shared.DestinationPgvectorFieldNameMappingConfigModel{}
	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.DestinationPgvectorFieldNameMappingConfigModel{
			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.DestinationPgvectorTextSplitter
	if r.Configuration.Processing.TextSplitter != nil {
		var destinationPgvectorBySeparator *shared.DestinationPgvectorBySeparator
		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())
			}
			destinationPgvectorBySeparator = &shared.DestinationPgvectorBySeparator{
				KeepSeparator: keepSeparator,
				Separators:    separators,
			}
		}
		if destinationPgvectorBySeparator != nil {
			textSplitter = &shared.DestinationPgvectorTextSplitter{
				DestinationPgvectorBySeparator: destinationPgvectorBySeparator,
			}
		}
		var destinationPgvectorByMarkdownHeader *shared.DestinationPgvectorByMarkdownHeader
		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
			}
			destinationPgvectorByMarkdownHeader = &shared.DestinationPgvectorByMarkdownHeader{
				SplitLevel: splitLevel,
			}
		}
		if destinationPgvectorByMarkdownHeader != nil {
			textSplitter = &shared.DestinationPgvectorTextSplitter{
				DestinationPgvectorByMarkdownHeader: destinationPgvectorByMarkdownHeader,
			}
		}
		var destinationPgvectorByProgrammingLanguage *shared.DestinationPgvectorByProgrammingLanguage
		if r.Configuration.Processing.TextSplitter.ByProgrammingLanguage != nil {
			language := shared.DestinationPgvectorLanguage(r.Configuration.Processing.TextSplitter.ByProgrammingLanguage.Language.ValueString())
			destinationPgvectorByProgrammingLanguage = &shared.DestinationPgvectorByProgrammingLanguage{
				Language: language,
			}
		}
		if destinationPgvectorByProgrammingLanguage != nil {
			textSplitter = &shared.DestinationPgvectorTextSplitter{
				DestinationPgvectorByProgrammingLanguage: destinationPgvectorByProgrammingLanguage,
			}
		}
	}
	processing := shared.DestinationPgvectorProcessingConfigModel{
		ChunkOverlap:      chunkOverlap,
		ChunkSize:         chunkSize,
		FieldNameMappings: fieldNameMappings,
		MetadataFields:    metadataFields,
		TextFields:        textFields,
		TextSplitter:      textSplitter,
	}
	configuration := shared.DestinationPgvector{
		Embedding:   embedding,
		Indexing:    indexing,
		OmitRawText: omitRawText,
		Processing:  processing,
	}
	out := shared.DestinationPgvectorCreateRequest{
		Name:          name,
		DefinitionID:  definitionID,
		WorkspaceID:   workspaceID,
		Configuration: configuration,
	}
	return &out
}

func (r *DestinationPgvectorResourceModel) 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 *DestinationPgvectorResourceModel) ToSharedDestinationPgvectorPutRequest() *shared.DestinationPgvectorPutRequest {
	var name string
	name = r.Name.ValueString()

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

	var embedding shared.DestinationPgvectorUpdateEmbedding
	var destinationPgvectorUpdateOpenAI *shared.DestinationPgvectorUpdateOpenAI
	if r.Configuration.Embedding.OpenAI != nil {
		var openaiKey string
		openaiKey = r.Configuration.Embedding.OpenAI.OpenaiKey.ValueString()

		destinationPgvectorUpdateOpenAI = &shared.DestinationPgvectorUpdateOpenAI{
			OpenaiKey: openaiKey,
		}
	}
	if destinationPgvectorUpdateOpenAI != nil {
		embedding = shared.DestinationPgvectorUpdateEmbedding{
			DestinationPgvectorUpdateOpenAI: destinationPgvectorUpdateOpenAI,
		}
	}
	var destinationPgvectorUpdateCohere *shared.DestinationPgvectorUpdateCohere
	if r.Configuration.Embedding.Cohere != nil {
		var cohereKey string
		cohereKey = r.Configuration.Embedding.Cohere.CohereKey.ValueString()

		destinationPgvectorUpdateCohere = &shared.DestinationPgvectorUpdateCohere{
			CohereKey: cohereKey,
		}
	}
	if destinationPgvectorUpdateCohere != nil {
		embedding = shared.DestinationPgvectorUpdateEmbedding{
			DestinationPgvectorUpdateCohere: destinationPgvectorUpdateCohere,
		}
	}
	var destinationPgvectorUpdateFake *shared.DestinationPgvectorUpdateFake
	if r.Configuration.Embedding.Fake != nil {
		destinationPgvectorUpdateFake = &shared.DestinationPgvectorUpdateFake{}
	}
	if destinationPgvectorUpdateFake != nil {
		embedding = shared.DestinationPgvectorUpdateEmbedding{
			DestinationPgvectorUpdateFake: destinationPgvectorUpdateFake,
		}
	}
	var destinationPgvectorUpdateAzureOpenAI *shared.DestinationPgvectorUpdateAzureOpenAI
	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()

		destinationPgvectorUpdateAzureOpenAI = &shared.DestinationPgvectorUpdateAzureOpenAI{
			APIBase:    apiBase,
			Deployment: deployment,
			OpenaiKey:  openaiKey1,
		}
	}
	if destinationPgvectorUpdateAzureOpenAI != nil {
		embedding = shared.DestinationPgvectorUpdateEmbedding{
			DestinationPgvectorUpdateAzureOpenAI: destinationPgvectorUpdateAzureOpenAI,
		}
	}
	var destinationPgvectorUpdateOpenAICompatible *shared.DestinationPgvectorUpdateOpenAICompatible
	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
		}
		destinationPgvectorUpdateOpenAICompatible = &shared.DestinationPgvectorUpdateOpenAICompatible{
			APIKey:     apiKey,
			BaseURL:    baseURL,
			Dimensions: dimensions,
			ModelName:  modelName,
		}
	}
	if destinationPgvectorUpdateOpenAICompatible != nil {
		embedding = shared.DestinationPgvectorUpdateEmbedding{
			DestinationPgvectorUpdateOpenAICompatible: destinationPgvectorUpdateOpenAICompatible,
		}
	}
	var password string
	password = r.Configuration.Indexing.Credentials.Password.ValueString()

	credentials := shared.DestinationPgvectorUpdateCredentials{
		Password: password,
	}
	var database string
	database = r.Configuration.Indexing.Database.ValueString()

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

	port := new(int64)
	if !r.Configuration.Indexing.Port.IsUnknown() && !r.Configuration.Indexing.Port.IsNull() {
		*port = r.Configuration.Indexing.Port.ValueInt64()
	} else {
		port = nil
	}
	var username string
	username = r.Configuration.Indexing.Username.ValueString()

	indexing := shared.DestinationPgvectorUpdatePostgresConnection{
		Credentials:   credentials,
		Database:      database,
		DefaultSchema: defaultSchema,
		Host:          host,
		Port:          port,
		Username:      username,
	}
	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.DestinationPgvectorUpdateFieldNameMappingConfigModel = []shared.DestinationPgvectorUpdateFieldNameMappingConfigModel{}
	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.DestinationPgvectorUpdateFieldNameMappingConfigModel{
			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.DestinationPgvectorUpdateTextSplitter
	if r.Configuration.Processing.TextSplitter != nil {
		var destinationPgvectorUpdateBySeparator *shared.DestinationPgvectorUpdateBySeparator
		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())
			}
			destinationPgvectorUpdateBySeparator = &shared.DestinationPgvectorUpdateBySeparator{
				KeepSeparator: keepSeparator,
				Separators:    separators,
			}
		}
		if destinationPgvectorUpdateBySeparator != nil {
			textSplitter = &shared.DestinationPgvectorUpdateTextSplitter{
				DestinationPgvectorUpdateBySeparator: destinationPgvectorUpdateBySeparator,
			}
		}
		var destinationPgvectorUpdateByMarkdownHeader *shared.DestinationPgvectorUpdateByMarkdownHeader
		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
			}
			destinationPgvectorUpdateByMarkdownHeader = &shared.DestinationPgvectorUpdateByMarkdownHeader{
				SplitLevel: splitLevel,
			}
		}
		if destinationPgvectorUpdateByMarkdownHeader != nil {
			textSplitter = &shared.DestinationPgvectorUpdateTextSplitter{
				DestinationPgvectorUpdateByMarkdownHeader: destinationPgvectorUpdateByMarkdownHeader,
			}
		}
		var destinationPgvectorUpdateByProgrammingLanguage *shared.DestinationPgvectorUpdateByProgrammingLanguage
		if r.Configuration.Processing.TextSplitter.ByProgrammingLanguage != nil {
			language := shared.DestinationPgvectorUpdateLanguage(r.Configuration.Processing.TextSplitter.ByProgrammingLanguage.Language.ValueString())
			destinationPgvectorUpdateByProgrammingLanguage = &shared.DestinationPgvectorUpdateByProgrammingLanguage{
				Language: language,
			}
		}
		if destinationPgvectorUpdateByProgrammingLanguage != nil {
			textSplitter = &shared.DestinationPgvectorUpdateTextSplitter{
				DestinationPgvectorUpdateByProgrammingLanguage: destinationPgvectorUpdateByProgrammingLanguage,
			}
		}
	}
	processing := shared.DestinationPgvectorUpdateProcessingConfigModel{
		ChunkOverlap:      chunkOverlap,
		ChunkSize:         chunkSize,
		FieldNameMappings: fieldNameMappings,
		MetadataFields:    metadataFields,
		TextFields:        textFields,
		TextSplitter:      textSplitter,
	}
	configuration := shared.DestinationPgvectorUpdate{
		Embedding:   embedding,
		Indexing:    indexing,
		OmitRawText: omitRawText,
		Processing:  processing,
	}
	out := shared.DestinationPgvectorPutRequest{
		Name:          name,
		WorkspaceID:   workspaceID,
		Configuration: configuration,
	}
	return &out
}
