networktocode/diffsync

Have a DiffSyncModel property (like a datetime) be a tiebreaker if there is a diff

Opened this issue · 2 comments

Environment

  • DiffSync version: 1.7.0

Proposed Functionality

I do not know if this is possible with a custom diff, but I would love to have the capability to check if items should be synchronized based on a value like modified date.

Use Case

Basically if an object looks like this:

class Issue(DiffSyncModel):
    _modelname = "issue"
    _identifiers = ("id",)
    _shortname = ()
    _attributes = ("assignee",)
    _children = {}

    id: str
    assignee: str
    modified_date: datetime.DateTime

I'd like to be able to decide which side wins (if there is a diff) based on the modified_date. This would mean that modified_date is ignored in the diff unless there is a difference. In those cases it will be the tiebreaker.

So what you are proposing is to have an attribute on a model that decides what the direction of the sync should be? As in, you instantiate both of your DiffSync subclass instances, and then instead of calling sync_from or sync_to, your proposal is to just call something like diffsync_a.sync(diffsync_b) and have each individual model decide which record "wins"?

Hi @Kircheneer,

It could be a sync method or a call to sync_to or sync_from, where diffsync will use the same property to check if it should overwrite the destination (or not).