UNPKG

1.11 kBJavaScriptView Raw
1var db = require('../db')
2
3module.exports = function putItem(store, data, cb) {
4
5 store.getTable(data.TableName, function(err, table) {
6 if (err) return cb(err)
7
8 if ((err = db.validateItem(data.Item, table)) != null) return cb(err)
9
10 var itemDb = store.getItemDb(data.TableName), key = db.createKey(data.Item, table)
11
12 itemDb.lock(key, function(release) {
13 cb = release(cb)
14
15 itemDb.get(key, function(err, existingItem) {
16 if (err && err.name != 'NotFoundError') return cb(err)
17
18 if ((err = db.checkConditional(data, existingItem)) != null) return cb(err)
19
20 var returnObj = {}
21
22 if (existingItem && data.ReturnValues == 'ALL_OLD')
23 returnObj.Attributes = existingItem
24
25 returnObj.ConsumedCapacity = db.addConsumedCapacity(data, false, existingItem, data.Item)
26
27 db.updateIndexes(store, table, existingItem, data.Item, function(err) {
28 if (err) return cb(err)
29
30 itemDb.put(key, data.Item, function(err) {
31 if (err) return cb(err)
32 cb(null, returnObj)
33 })
34 })
35 })
36 })
37 })
38}