| 12345678910111213141516171819202122232425262728293031323334353637383940 |
- _ = require "underscore"
- {ObjectId} = require("./mongojs")
- module.exports = RangeManager =
- shouldUpdateRanges: (doc_ranges, incoming_ranges) ->
- if !incoming_ranges?
- throw new Error("expected incoming_ranges")
- # If the ranges are empty, we don't store them in the DB, so set
- # doc_ranges to an empty object as default, since this is was the
- # incoming_ranges will be for an empty range set.
- if !doc_ranges?
- doc_ranges = {}
- return not _.isEqual(doc_ranges, incoming_ranges)
-
- jsonRangesToMongo: (ranges) ->
- return null if !ranges?
-
- updateMetadata = (metadata) ->
- if metadata?.ts?
- metadata.ts = new Date(metadata.ts)
- if metadata?.user_id?
- metadata.user_id = RangeManager._safeObjectId(metadata.user_id)
-
- for change in ranges.changes or []
- change.id = RangeManager._safeObjectId(change.id)
- updateMetadata(change.metadata)
- for comment in ranges.comments or []
- comment.id = RangeManager._safeObjectId(comment.id)
- if comment.op?.t?
- comment.op.t = RangeManager._safeObjectId(comment.op.t)
- updateMetadata(comment.metadata)
- return ranges
-
- _safeObjectId: (data) ->
- try
- return ObjectId(data)
- catch error
- return data
|