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

package shared

// StreamConfiguration - Configurations for a single stream.
type StreamConfiguration struct {
	Name string `json:"name"`
	// Namespace of the stream.
	Namespace *string                 `json:"namespace,omitempty"`
	SyncMode  *ConnectionSyncModeEnum `json:"syncMode,omitempty"`
	// Path to the field that will be used to determine if a record is new or modified since the last sync. This field is REQUIRED if `sync_mode` is `incremental` unless there is a default.
	CursorField []string `json:"cursorField,omitempty"`
	// Paths to the fields that will be used as primary key. This field is REQUIRED if `destination_sync_mode` is `*_dedup` unless it is already supplied by the source schema.
	PrimaryKey [][]string `json:"primaryKey,omitempty"`
	// Whether to move raw files from the source to the destination during the sync.
	IncludeFiles *bool `json:"includeFiles,omitempty"`
	// The name of the destination object that this stream will be written to, used for data activation destinations.
	DestinationObjectName *string `json:"destinationObjectName,omitempty"`
	// Paths to the fields that will be included in the configured catalog.
	SelectedFields []SelectedFieldInfo `json:"selectedFields,omitempty"`
	// Mappers that should be applied to the stream before writing to the destination.
	Mappers []ConfiguredStreamMapper `json:"mappers,omitempty"`
}

func (o *StreamConfiguration) GetName() string {
	if o == nil {
		return ""
	}
	return o.Name
}

func (o *StreamConfiguration) GetNamespace() *string {
	if o == nil {
		return nil
	}
	return o.Namespace
}

func (o *StreamConfiguration) GetSyncMode() *ConnectionSyncModeEnum {
	if o == nil {
		return nil
	}
	return o.SyncMode
}

func (o *StreamConfiguration) GetCursorField() []string {
	if o == nil {
		return nil
	}
	return o.CursorField
}

func (o *StreamConfiguration) GetPrimaryKey() [][]string {
	if o == nil {
		return nil
	}
	return o.PrimaryKey
}

func (o *StreamConfiguration) GetIncludeFiles() *bool {
	if o == nil {
		return nil
	}
	return o.IncludeFiles
}

func (o *StreamConfiguration) GetDestinationObjectName() *string {
	if o == nil {
		return nil
	}
	return o.DestinationObjectName
}

func (o *StreamConfiguration) GetSelectedFields() []SelectedFieldInfo {
	if o == nil {
		return nil
	}
	return o.SelectedFields
}

func (o *StreamConfiguration) GetMappers() []ConfiguredStreamMapper {
	if o == nil {
		return nil
	}
	return o.Mappers
}
