Cache invalidation in API for presets and presets hash

This commit is contained in:
Zaid Abdulla committed 2013-06-01 19:38:47 +03:00
1 parent ea5c92aaa0
commit 913388ab34
1 file changed
+14 -3
+14 -3
View File
@@ -67,6 +67,8 @@ else
preset._id = presetName preset._id = presetName
db.presetsCollection.save(preset, (err) -> db.presetsCollection.save(preset, (err) ->
db.memcached.del('presets', (err, res) ->
)
db.memcached.del('presets_hash', (err, res) -> db.memcached.del('presets_hash', (err, res) ->
) )
if err if err
@@ -78,6 +80,8 @@ else
) )
else if request.method == 'DELETE' else if request.method == 'DELETE'
db.presetsCollection.remove({'_id' : presetName}, (err, removedCount) -> db.presetsCollection.remove({'_id' : presetName}, (err, removedCount) ->
db.memcached.del('presets', (err, res) ->
)
db.memcached.del('presets_hash', (err, res) -> db.memcached.del('presets_hash', (err, res) ->
) )
if err if err
@@ -96,6 +100,8 @@ else
tag = querystring.unescape(r[2]) tag = querystring.unescape(r[2])
if request.method == 'POST' if request.method == 'POST'
db.devicesCollection.update({'_id' : deviceId}, {'$addToSet' : {'_tags' : tag}}, {safe: true}, (err) -> db.devicesCollection.update({'_id' : deviceId}, {'$addToSet' : {'_tags' : tag}}, {safe: true}, (err) ->
db.memcached.del("#{deviceId}_presets_hash", (err, res) ->
)
if err if err
response.writeHead(500) response.writeHead(500)
response.end(err) response.end(err)
@@ -105,6 +111,8 @@ else
) )
else if request.method == 'DELETE' else if request.method == 'DELETE'
db.devicesCollection.update({'_id' : deviceId}, {'$pull' : {'_tags' : tag}}, {safe: true}, (err) -> db.devicesCollection.update({'_id' : deviceId}, {'$pull' : {'_tags' : tag}}, {safe: true}, (err) ->
db.memcached.del("#{deviceId}_presets_hash", (err, res) ->
)
if err if err
response.writeHead(500) response.writeHead(500)
response.end(err) response.end(err)
@@ -119,9 +127,11 @@ else
if request.method == 'POST' if request.method == 'POST'
deviceId = querystring.unescape(DEVICE_TASKS_REGEX.exec(urlParts.pathname)[1]) deviceId = querystring.unescape(DEVICE_TASKS_REGEX.exec(urlParts.pathname)[1])
if body if body
t = JSON.parse(body) task = JSON.parse(body)
t.device = deviceId task.device = deviceId
apiFunctions.insertTasks(t, (err) -> apiFunctions.insertTasks(task, (err) ->
db.memcached.del("#{deviceId}_presets_hash", (err, res) ->
)
if err if err
response.writeHead(500) response.writeHead(500)
response.end(err) response.end(err)
@@ -182,6 +192,7 @@ else
else if action is '/retry' else if action is '/retry'
if request.method == 'POST' if request.method == 'POST'
db.tasksCollection.update({_id : taskId}, {$unset : {fault : 1}, $inc : {retries : 1}, '$set' : {timestamp : new Date()}}, (err, count) -> db.tasksCollection.update({_id : taskId}, {$unset : {fault : 1}, $inc : {retries : 1}, '$set' : {timestamp : new Date()}}, (err, count) ->
# TODO need to invalidate presets hash for the device
response.writeHead(200) response.writeHead(200)
response.end() response.end()
) )