Skip to content

random-guys/pro-vcs

Repository files navigation

pro-vcs

Database abstraction to simplify review request workflow

How to install

Run yarn add @random-guys/pro-vcs

How it works

TODO

  • Less complex code
  • Timestamps
  • Introduction of transactions for better concurrency guarantees
  • Arrange tests
  • True data uniqueness by taking object_state into consideration
  • proxy ModelNotFound errors from inplace methods to InconsistentState error

Pending Tests

  • event.repo
    • create
      • object is in created state
      • prohub is notified
      • DB constraints are held
    • createApproved
      • object is in stable state
    • assertExists
      • throws DuplicateModelError only when duplicate exists
    • get
      • return frozen for created/updated/deleted when request is not from owner
      • return stable objects as is
      • patches objects for updated owners
    • byQuery
      • same as get
      • hides created objects by default
      • shows created objects on allowNew
    • all
      • same as get
      • same as byQuery
    • list
      • same as all
    • update
      • updates created objects
      • updates updated objects
      • returns patched object
      • sends patches to prohub for created objects
      • sends patches to prohub for updated objects
      • throws InvalidOperation for deleted objects
      • create a new update for a stable object
      • send a new event for stable objects
      • throws InvalidOperation for objects not owner by user
    • delete
      • sends close event to prohub for created objects
      • sends close event to prohub for updated objects
      • sends close event to prohub for deleted objects
      • undo updated objects
      • undo deleted objects
      • deletes created events
      • creates new deleted event for stable objects
      • throws InvalidOperation for objects not owner by user
    • merge
      • stabilises created objects
      • stabilises updated objects with the new data. i.e other users can now see the changes
      • obliterates deleted objects
      • throws InvalidOperation for stable objects
      • stabilises created with additional updates
      • stabilises updated with additional updates
    • reject
      • cleans up created objects
      • reverts updated/deleted objects
      • throws InvalidOperation for stable objects
      • reverts updated with additional updates
  • merge.app
    • onApprove
    • onReject
    • onChecks