UNPKG

1.04 kBJavaScriptView Raw
1var errors = require('../errors')
2var util = require('../lib/util')
3
4module.exports = function (osm) {
5 return function createElement (element, cb) {
6 // TODO: check element schema and whitelist props
7 var id = util.generateId()
8 var changesetId = element.changeset
9
10 if (!changesetId) {
11 return cb(new errors.MissingChangesetId())
12 }
13
14 osm.get(changesetId, function (err, docs) {
15 if (err) return cb(err)
16 if (Object.keys(docs).length === 0) {
17 return cb(new errors.MissingChangeset(changesetId))
18 }
19 var closedAt = Object.keys(docs).reduce(function (p, v) {
20 if (p) return p
21 return docs[v].closedAt || docs[v].closed_at
22 }, false)
23 if (closedAt) {
24 return cb(new errors.ClosedChangeset(changesetId, closedAt))
25 }
26 var op = Object.assign(util.nodes2refs(element), {
27 timestamp: new Date().toISOString()
28 })
29 osm.put(id, op, function (err, node) {
30 if (err) return cb(err)
31 cb(null, id, node)
32 })
33 })
34 }
35}