Challenge:
Version Model for resources and repo works on created_at. created_at is system generated datetime field, and cannot be tempered from outside. Whatever gets created later is the newer version.
Tasks
Need to establish a link between versions (linked list). Probably each versioned resource needs to have a URI of the previous
previous_version_uri -- will this affect standard checksum?
version_order -- for quick sorting
List versions -- Sort on all versions by version_order - 0 for initial version higher being newer
Latest version -- Sort on all versions by version_order and get max.
New version creation can have:
new_version.previous_version_uri=existing_latest_version.uri and new_version.version_order=existing_latest_version.version_order + 1
In between version creation needs to be created with previous_version_uri in payload. (considering the new_version is added after a version say previous_version.
existing_next_version is version where versions.previous_version_uri=pervious_version_uri
new_version.previous_version_uri=previous_version_uri and new_version.version_order=previous_version.version_order + 1
existing_next_version.previous_version_uri=new_version.uri and existing_next_version.version_order=new_version.version_order + 1
previous_version_uri and version_order cannot be edited from outside.
Latest version will have is_latest_version=true just like now for resources. For Repo we must add this to make it consistent and faster to lookup.
Challenge: Version Model for resources and repo works on created_at. created_at is system generated datetime field, and cannot be tempered from outside. Whatever gets created later is the newer version.
Tasks
previous_version_uri
-- will this affect standard checksum?version_order
-- for quick sortingversion_order
- 0 for initial version higher being newerversion_order
and get max.new_version.previous_version_uri=existing_latest_version.uri
andnew_version.version_order=existing_latest_version.version_order + 1
previous_version_uri
in payload. (considering thenew_version
is added after a version sayprevious_version
.existing_next_version
is version whereversions.previous_version_uri=pervious_version_uri
new_version.previous_version_uri=previous_version_uri
andnew_version.version_order=previous_version.version_order + 1
existing_next_version.previous_version_uri=new_version.uri
andexisting_next_version.version_order=new_version.version_order + 1
previous_version_uri
andversion_order
cannot be edited from outside.is_latest_version=true
just like now for resources. For Repo we must add this to make it consistent and faster to lookup.