UNPKG

1.07 kBJavaScriptView Raw
1var errors = require('../errors')
2
3/**
4 * Check:
5 * 1. A doc with the given id exists in the database
6 * 2. If no version is given, doc must not be forked
7 * 3. The doc is a changeset
8 * 4. The changeset is not closed
9 */
10module.exports = function validateChangeset (osm, id, version, cb) {
11 osm.get(id, function (err, docs) {
12 if (err) return cb(err)
13 if (Object.keys(docs).length === 0) {
14 return cb(new errors.NotFound('changeset #' + id))
15 }
16 if (!version && Object.keys(docs).length > 1) {
17 return cb(new errors.ForkedChangeset())
18 }
19 var doc = version ? docs[version] : docs[Object.keys(docs)[0]]
20 if (!doc) {
21 return cb(new errors.NotFound('changeset #' + id + ' version #' + version))
22 }
23 if (doc.type !== 'changeset') {
24 return cb(new errors.NotFound('changeset #' + id))
25 }
26 if (!doc) return cb(new errors.NotFound('changeset id: #' + id + ' version: #' + version))
27 if (doc.closedAt || doc.closed_at) {
28 return cb(new errors.ClosedChangeset(id, doc.closedAt || doc.closed_at))
29 }
30 cb()
31 })
32}