differ

package
v0.7.0 Latest Latest
Warning

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

Go to latest
Published: Aug 22, 2026 License: AGPL-3.0 Imports: 7 Imported by: 0

Documentation

Overview

Package differ provides functionality for comparing catalogs and detecting changes.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type AuthorChangeset

type AuthorChangeset struct {
	Added   []catalogs.Author // New authors
	Updated []AuthorUpdate    // Updated authors
	Removed []catalogs.Author // Removed authors
}

AuthorChangeset represents changes to authors.

func (*AuthorChangeset) HasChanges

func (a *AuthorChangeset) HasChanges() bool

HasChanges returns true if the author changeset contains any changes.

func (*AuthorChangeset) Print

func (a *AuthorChangeset) Print()

Print outputs author changes in a human-readable format.

type AuthorUpdate

type AuthorUpdate struct {
	ID       catalogs.AuthorID // ID of the author being updated
	Existing catalogs.Author   // Current author
	New      catalogs.Author   // New author
	Changes  []FieldChange     // Detailed list of field changes
}

AuthorUpdate represents an update to an existing author.

type ChangeType

type ChangeType string

ChangeType represents the type of change.

const (
	// ChangeTypeAdd indicates an item was added.
	ChangeTypeAdd ChangeType = "add"
	// ChangeTypeUpdate indicates an item was updated.
	ChangeTypeUpdate ChangeType = "update"
	// ChangeTypeRemove indicates an item was removed.
	ChangeTypeRemove ChangeType = "remove"
)

type Changeset

type Changeset struct {
	Models    *ModelChangeset    // Model changes
	Providers *ProviderChangeset // Provider changes
	Authors   *AuthorChangeset   // Author changes
	Summary   ChangesetSummary   // Summary statistics
}

Changeset represents all changes between two catalogs.

func (*Changeset) HasChanges

func (c *Changeset) HasChanges() bool

HasChanges returns true if the changeset contains any changes.

func (*Changeset) IsEmpty

func (c *Changeset) IsEmpty() bool

IsEmpty returns true if the changeset contains no changes.

func (*Changeset) Print

func (c *Changeset) Print()

Print outputs a detailed, human-readable view of the changeset.

func (*Changeset) String

func (c *Changeset) String() string

String returns a human-readable summary of the changeset.

type ChangesetSummary

type ChangesetSummary struct {
	ModelsAdded      int
	ModelsUpdated    int
	ModelsRemoved    int
	ProvidersAdded   int
	ProvidersUpdated int
	ProvidersRemoved int
	AuthorsAdded     int
	AuthorsUpdated   int
	AuthorsRemoved   int
	TotalChanges     int
}

ChangesetSummary provides summary statistics for a changeset.

type Differ

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

Differ detects changes between catalog resources.

Differ is concrete because the package has one implementation. Its algorithm inputs remain the narrow catalogs.Reader interface where substitutability is useful.

func New

func New(opts ...Option) *Differ

New creates a updated Differ with default settings.

func (*Differ) Authors

func (diff *Differ) Authors(existing, updated []catalogs.Author) *AuthorChangeset

Authors compares two sets of authors and returns changes.

func (*Differ) Catalogs

func (diff *Differ) Catalogs(existing, updated catalogs.Reader) *Changeset

Catalogs compares two complete catalogs Both catalogs only need to be readable.

func (*Differ) Models

func (diff *Differ) Models(existing, updated []*catalogs.Model) *ModelChangeset

Models compares two sets of models and returns changes.

func (*Differ) Providers

func (diff *Differ) Providers(existing, updated []catalogs.Provider) *ProviderChangeset

Providers compares two sets of providers and returns changes.

type FieldChange

type FieldChange struct {
	Path     string     // Field path (e.g., "pricing.input")
	OldValue string     // Previous value (string representation)
	NewValue string     // New value (string representation)
	Type     ChangeType // Type of change
	Source   sources.ID // Source that caused the change (for provenance)
}

FieldChange represents a change to a specific field.

type ModelChange added in v0.1.0

type ModelChange struct {
	ProviderID catalogs.ProviderID // Provider scope for this model change, when known
	Model      catalogs.Model      // Added or removed model
}

ModelChange represents a provider-scoped model add or remove.

type ModelChangeset

type ModelChangeset struct {
	Added         []catalogs.Model // New models
	AddedScoped   []ModelChange    // Provider-scoped new models, when available
	Updated       []ModelUpdate    // Updated models
	Removed       []catalogs.Model // Removed models
	RemovedScoped []ModelChange    // Provider-scoped removed models, when available
}

ModelChangeset represents changes to models.

func (*ModelChangeset) HasChanges

func (m *ModelChangeset) HasChanges() bool

HasChanges returns true if the model changeset contains any changes.

func (*ModelChangeset) Print

func (m *ModelChangeset) Print()

Print outputs model changes in a human-readable format.

type ModelUpdate

type ModelUpdate struct {
	ID         string              // ID of the model being updated
	ProviderID catalogs.ProviderID // Provider scope for this model update, when known
	Existing   catalogs.Model      // Current model
	New        catalogs.Model      // New model
	Changes    []FieldChange       // Detailed list of field changes
}

ModelUpdate represents an update to an existing model.

type Option

type Option func(*Differ)

Option is a functional option for configuring Differ.

func WithDeepComparison

func WithDeepComparison(enabled bool) Option

WithDeepComparison enables/disables deep structural comparison.

func WithIgnoredFields

func WithIgnoredFields(fields ...string) Option

WithIgnoredFields sets fields to ignore during comparison.

func WithTracking

func WithTracking(enabled bool) Option

WithTracking enables provenance tracking in diffs.

type ProviderChangeset

type ProviderChangeset struct {
	Added   []catalogs.Provider // New providers
	Updated []ProviderUpdate    // Updated providers
	Removed []catalogs.Provider // Removed providers
}

ProviderChangeset represents changes to providers.

func (*ProviderChangeset) HasChanges

func (p *ProviderChangeset) HasChanges() bool

HasChanges returns true if the provider changeset contains any changes.

func (*ProviderChangeset) Print

func (p *ProviderChangeset) Print()

Print outputs provider changes in a human-readable format.

type ProviderUpdate

type ProviderUpdate struct {
	ID       catalogs.ProviderID // ID of the provider being updated
	Existing catalogs.Provider   // Current provider
	New      catalogs.Provider   // New provider
	Changes  []FieldChange       // Detailed list of field changes
}

ProviderUpdate represents an update to an existing provider.

Jump to

Keyboard shortcuts

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