migrate.coffee 1.2 KB

123456789101112131415161718192021222324252627282930313233343536
  1. RedisManager = require "./app/coffee/RedisManager"
  2. UpdateManager = require "./app/coffee/UpdateManager"
  3. LockManager = require "./app/coffee/LockManager"
  4. async = require "async"
  5. handleErrorInsideLock = (doc_id, lockValue, original_error, callback = (error) ->) ->
  6. LockManager.releaseLock doc_id, lockValue, (lock_error) ->
  7. callback(original_error)
  8. migrateDoc = (doc_id, callback = (error) ->) ->
  9. LockManager.getLock doc_id, (error, lockValue) ->
  10. return callback(error) if error?
  11. RedisManager.getAndSetDoc doc_id, (error, project_id) ->
  12. return handleErrorInsideLock(doc_id, lockValue, error, callback) if error?
  13. RedisManager.getAndSetProject project_id, (error) ->
  14. return handleErrorInsideLock(doc_id, lockValue, error, callback) if error?
  15. LockManager.releaseLock doc_id, lockValue, (error) ->
  16. return callback(error) if error?
  17. UpdateManager.continueProcessingUpdatesWithLock project_id, doc_id, callback
  18. doc_ids = process.argv.slice(2)
  19. if doc_ids.length == 0
  20. console.log "Usage: coffee migrate.coffee DOC_ID [DOC_ID ...]"
  21. process.exit(1)
  22. jobs = []
  23. for doc_id in doc_ids
  24. do (doc_id) ->
  25. jobs.push (cb) ->
  26. console.log "MIGRATING #{doc_id}"
  27. migrateDoc doc_id, cb
  28. async.series jobs, (error) ->
  29. throw error if error?
  30. process.exit(0)