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 (*Merger) Merge ¶
func (m *Merger) Merge(packets ...*packet.DataPacket) (*MergeResult, error)
Merge объединяет несколько TDTP пакетов в один
Click to show internal directories.
Click to hide internal directories.