Преглед изворни кода

script to flush dangling ops

Brian Gough пре 9 година
родитељ
комит
33fb1ddf57
1 измењених фајлова са 54 додато и 0 уклоњено
  1. 54 0
      services/track-changes/fixdangling.coffee

+ 54 - 0
services/track-changes/fixdangling.coffee

@@ -0,0 +1,54 @@
+Settings = require "settings-sharelatex"
+logger = require "logger-sharelatex"
+TrackChangesLogger = logger.initialize("track-changes").logger
+async = require "async"
+fs = require "fs"
+request = require "request"
+cli = require "cli"
+
+mongojs = require "mongojs"
+bson = require "bson"
+db = mongojs(Settings.mongo.url, ["docs"])
+ObjectId = mongojs.ObjectId
+
+options = cli.parse({
+	port: ['p', 'port number for track changes', 'number'],
+	force: ['f', 'actually make the fix']
+});
+
+if cli.args.length < 1
+	console.log "fixdangling -p PORT file_of_doc_ids"
+	process.exit()
+
+file = cli.args.pop()
+doc_ids = fs.readFileSync(file).toString().trim().split("\n")
+
+missing = 0
+errored = 0
+success = 0
+
+fixDangling = (doc_id, callback) ->
+	# look up project id from doc id
+	db.docs.find {_id:ObjectId(doc_id)}, {project_id:1}, (err, result) ->
+		console.log "doc_id", doc_id, "err", err, "result", result
+		if err?
+			errored++
+			return callback()
+		if !result? or result.length == 0
+			missing++
+			return callback()
+		project_id = result[0]
+		console.log "found project_id", project_id, "for doc_id", doc_id
+		url = "http://localhost:#{options.port}/project/#{project_id}/doc/#{doc_id}/flush"
+		if options.force
+			request.post url, (err, response, body) ->
+				if err? then errored++ else success++
+				callback()
+		else
+			console.log "URL:", url
+			success++
+			callback()
+
+async.eachSeries doc_ids, fixDangling, (err) ->
+	console.log "final result", err, "missing", missing, "errored", errored, "success", success
+	db.close()