merge

package
v1.26.4 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 10, 2026 License: MIT Imports: 3 Imported by: 0

Documentation

Overview

Package merge provides functionality for the TDTP framework.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Conflict

type Conflict struct {
	Key            string   // Ключ строки
	ExistingRow    []string // Существующая строка
	ConflictingRow []string // Конфликтующая строка
	Resolution     string   // Как был разрешён: "kept_existing", "used_new"
}

Conflict представляет конфликт при объединении

type MergeOptions

type MergeOptions struct {
	// Strategy - стратегия объединения
	Strategy MergeStrategy

	// KeyFields - поля для идентификации строк (по умолчанию primary key)
	KeyFields []string

	// ConflictResolver - функция для разрешения конфликтов (опционально)
	// Возвращает true если оставляем newRow, false если оставляем existingRow
	ConflictResolver func(existingRow, newRow []string, schema packet.Schema) bool
}

MergeOptions опции для объединения

type MergeResult

type MergeResult struct {
	Packet    *packet.DataPacket // Результирующий пакет
	Stats     MergeStats         // Статистика
	Conflicts []Conflict         // Обнаруженные конфликты
}

MergeResult результат объединения

func (*MergeResult) FormatText

func (r *MergeResult) FormatText() string

FormatText форматирует результат в текстовый вид

type MergeStats

type MergeStats struct {
	TotalPackets   int // Количество объединённых пакетов
	TotalRowsIn    int // Всего строк на входе
	TotalRowsOut   int // Строк в результате
	Duplicates     int // Дубликаты (удалено при дедупликации)
	ConflictsCount int // Конфликты (разрешено)
}

MergeStats статистика объединения

type MergeStrategy

type MergeStrategy int

MergeStrategy определяет стратегию объединения

const (
	// StrategyUnion - объединение всех строк (дедупликация по ключу)
	StrategyUnion MergeStrategy = iota

	// StrategyIntersection - только строки, присутствующие во всех пакетах
	StrategyIntersection

	// StrategyLeftPriority - при конфликтах приоритет левому (первому) пакету
	StrategyLeftPriority

	// StrategyRightPriority - при конфликтах приоритет правому (последнему) пакету
	StrategyRightPriority

	// StrategyAppend - просто добавить все строки (без дедупликации)
	StrategyAppend
)

func ParseStrategy

func ParseStrategy(s string) (MergeStrategy, error)

ParseStrategy парсит строку в стратегию

func (MergeStrategy) String

func (s MergeStrategy) String() string

String возвращает строковое представление стратегии

type Merger

type Merger struct {
	// contains filtered or unexported fields
}

Merger выполняет объединение TDTP пакетов

func NewMerger

func NewMerger(options MergeOptions) *Merger

NewMerger создаёт новый Merger

func (*Merger) Merge

func (m *Merger) Merge(packets ...*packet.DataPacket) (*MergeResult, error)

Merge объединяет несколько TDTP пакетов в один

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL