UNPKG

1.54 kBJavaScriptView Raw
1var async = require('async')
2
3module.exports = function deleteTable(store, data, cb) {
4
5 var key = data.TableName, tableDb = store.tableDb
6
7 store.getTable(key, false, function(err, table) {
8 if (err) return cb(err)
9
10 // Check if table is ACTIVE or not?
11 if (table.TableStatus == 'CREATING') {
12 err = new Error
13 err.statusCode = 400
14 err.body = {
15 __type: 'com.amazonaws.dynamodb.v20120810#ResourceInUseException',
16 message: 'Attempt to change a resource which is still in use: Table is being created: ' + key,
17 }
18 return cb(err)
19 }
20
21 table.TableStatus = 'DELETING'
22
23 var deletes = [store.deleteItemDb.bind(store, key), store.deleteTagDb.bind(store, key)]
24 ;['Local', 'Global'].forEach(function(indexType) {
25 var indexes = table[indexType + 'SecondaryIndexes'] || []
26 deletes = deletes.concat(indexes.map(function(index) {
27 return store.deleteIndexDb.bind(store, indexType, table.TableName, index.IndexName)
28 }))
29 })
30
31 delete table.GlobalSecondaryIndexes
32
33 tableDb.put(key, table, function(err) {
34 if (err) return cb(err)
35
36 async.parallel(deletes, function(err) {
37 if (err) return cb(err)
38
39 setTimeout(function() {
40 tableDb.del(key, function(err) {
41 // eslint-disable-next-line no-console
42 if (err && !/Database is not open/.test(err)) console.error(err.stack || err)
43 })
44 }, store.options.deleteTableMs)
45
46 cb(null, {TableDescription: table})
47 })
48 })
49 })
50
51}