Skip to content

Topic Merge Service #141

Open

Description

@JeremyCaney

Extract the logic merge one topic's content into another into a reusable service. That logic is currently implemented twice: Once (fully-featured) in the companion Data Transfer import/export tool, and once (a stripped-down special case) in the core library's ITopicRepository.Rollback() feature.

Tasks

  • Build a generic merge service in core
    • ITopicMergeService
    • TopicMergeService
    • MergeStrategy
    • MergeOptions
  • Attempt to re-express the existing ITopicRepository.Rollback() merge logic on top of the new merge service (TopicRepository.MergeVersion())
    • Acceptable if this doesn't integrate cleanly; MergeVersion() can stay separate
  • Document the ability to seed one repository from another using the merge service (for the Data Transfer Service)
  • Upgrade OnTopic-Data-Transfer to depend on the merge service
    • Adopt the shared serialization and merge logic in place of its own types and methods:
      • TopicData
      • RecordData
      • MultiMap
      • Import()
      • Export()
  • Create unit tests to validate the above logic

Activity

  1. added this to the OnTopic 6.0.0 milestone on Jul 26, 2026
  2. self-assigned this
    on Jul 26, 2026
  3. added
    Area: RepositoriesRelates to the `ITopicRepository` interface or one of its implementations.
    Area: EntityRelates to the core data data structure for modeling topic entities.
    Type: FeatureIntroduces a major area of functionality.
    on Jul 26, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

Area: EntityRelates to the core data data structure for modeling topic entities.Area: RepositoriesRelates to the `ITopicRepository` interface or one of its implementations.Priority: 2Severity 1: MinorStatus 2: ScheduledPlanned for an upcoming release.Type: FeatureIntroduces a major area of functionality.

Projects

No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions