runsDatastore.js 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. function RunsDatastore() {
  2. 'use strict';
  3. // NOT PERSISTING RUNS
  4. // For the moment, maybe one day
  5. var runs = {};
  6. var STATUS_AWAITING = 'awaiting';
  7. var STATUS_RUNNING = 'running';
  8. var STATUS_COMPLETE = 'complete';
  9. var STATUS_FAILED = 'failed';
  10. this.add = function(run, position) {
  11. runs[run.runId] = run;
  12. this.updatePosition(run.runId, position);
  13. };
  14. this.get = function(runId) {
  15. return runs[runId];
  16. };
  17. this.updatePosition = function(runId, position) {
  18. var run = runs[runId];
  19. if (position > 0) {
  20. run.status = {
  21. statusCode: STATUS_AWAITING,
  22. position: position
  23. };
  24. } else {
  25. run.status = {
  26. statusCode: STATUS_RUNNING
  27. };
  28. }
  29. runs[runId] = run;
  30. };
  31. this.markAsComplete = function(runId) {
  32. var run = runs[runId];
  33. run.status = {
  34. statusCode: STATUS_COMPLETE
  35. };
  36. runs[runId] = run;
  37. };
  38. this.markAsFailed = function(runId) {
  39. var run = runs[runId];
  40. run.status = {
  41. statusCode: STATUS_FAILED
  42. };
  43. runs[runId] = run;
  44. };
  45. this.delete = function(runId) {
  46. delete runs[runId];
  47. };
  48. this.list = function() {
  49. var runsArray = [];
  50. Object.keys(runs).forEach(function(key) {
  51. runsArray.push(runs[key]);
  52. });
  53. return runsArray;
  54. };
  55. }
  56. module.exports = RunsDatastore;