OpenConceptLab / ocl_issues

Issues for all OCL repos. NOTE: Install ZenHub Browser Extension and request access to the OCL Roadmap board to view all issues and to contribute
4 stars 1 forks source link

Enable creating/importing/editing resource in an older repo version #1868

Open snyaggarwal opened 3 months ago

snyaggarwal commented 3 months ago

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

  1. 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
  2. List versions -- Sort on all versions by version_order - 0 for initial version higher being newer
  3. Latest version -- Sort on all versions by version_order and get max.
  4. 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
  5. 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
  6. previous_version_uri and version_order cannot be edited from outside.
  7. 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.