Interface used to define data objects that can be versioned.
Description
The IVersioned interface allows you to define data objects that can be versioned.
Important points
- Versioning is often used as an optimistic concurrency mechanism.
- The version doesn’t have to be a number, but it is recommended to use sequential values to determine if one object has a newer or older version than another one.
- It is common to use the time of change as the object version.
Fields
version
The object’s version.
version: str
Examples
class MyData(IStringIdentifiable, IVersioned):
id = None
version = None
# do something
def update_data(item):
# do something
if item.version < old_item.version:
raise ConcurrencyException(None, "VERSION_CONFLICT", "The change has older version stored args")
# do something