def resolve(self, conflict: Conflict) -> Resolution:
if conflict.source_timestamp is None and conflict.target_timestamp is None:
message = (
f'Cannot resolve conflict for key {conflict.key!r}: '
f'no timestamps available on either side'
)
raise FileSyncConflictError(message)
if conflict.source_timestamp is None:
return Resolution(
action=ResolutionAction.USE_TARGET,
record=conflict.target_record,
)
if conflict.target_timestamp is None:
return Resolution(
action=ResolutionAction.USE_SOURCE,
record=conflict.source_record,
)
if conflict.source_timestamp >= conflict.target_timestamp:
return Resolution(
action=ResolutionAction.USE_SOURCE,
record=conflict.source_record,
)
return Resolution(
action=ResolutionAction.USE_TARGET,
record=conflict.target_record,
)