1
0
Fork 0
mirror of https://github.com/openstf/stf synced 2025-10-04 10:19:30 +02:00

Ensure that device is saved before probing it.

This commit is contained in:
Simo Kinnunen 2014-02-03 11:09:40 +09:00
parent 483bf1be7a
commit b84968c08c
2 changed files with 28 additions and 8 deletions

View file

@ -1,10 +1,13 @@
var r = require('rethinkdb')
var Promise = require('bluebird')
var db = require('./')
var wire = require('../wire')
var wireutil = require('../wire/util')
module.exports.saveUserAfterLogin = function(user) {
var dbapi = Object.create(null)
dbapi.saveUserAfterLogin = function(user) {
return db.run(r.table('users').get(user.email).update({
name: user.name
, lastLoggedInAt: r.now()
@ -23,11 +26,11 @@ module.exports.saveUserAfterLogin = function(user) {
})
}
module.exports.loadUser = function(email) {
dbapi.loadUser = function(email) {
return db.run(r.table('users').get(email))
}
module.exports.saveDeviceLog = function(serial, entry) {
dbapi.saveDeviceLog = function(serial, entry) {
return db.run(r.table('logs').insert({
serial: entry.serial
, timestamp: r.epochTime(entry.timestamp)
@ -38,7 +41,7 @@ module.exports.saveDeviceLog = function(serial, entry) {
}))
}
module.exports.saveDeviceStatus = function(serial, status) {
dbapi.saveDeviceStatus = function(serial, status) {
return db.run(r.table('devices').get(serial).update({
status: status.status
, provider: status.provider
@ -58,7 +61,7 @@ module.exports.saveDeviceStatus = function(serial, status) {
})
}
module.exports.saveDeviceIdentity = function(serial, identity) {
dbapi.saveDeviceIdentity = function(serial, identity) {
return db.run(r.table('devices').get(serial).update({
platform: identity.platform
, manufacturer: identity.manufacturer
@ -71,10 +74,24 @@ module.exports.saveDeviceIdentity = function(serial, identity) {
}))
}
module.exports.loadDevices = function() {
dbapi.loadDevices = function() {
return db.run(r.table('devices'))
}
module.exports.loadDevice = function(serial) {
dbapi.loadDevice = function(serial) {
return db.run(r.table('devices').get(serial))
}
dbapi.ensureDeviceSaved = function(serial) {
return dbapi.loadDevice(serial)
.then(function(device) {
if (!device) {
return Promise.delay(100).then(function() {
return dbapi.loadDevice(serial)
})
}
return device
})
}
module.exports = dbapi

View file

@ -43,7 +43,10 @@ module.exports = function(options) {
appDealer.send([channel, data])
})
.on(wire.DevicePokeMessage, function(channel, message) {
devDealer.send([message.channel, wireutil.makeProbeMessage()])
dbapi.ensureDeviceSaved(message.serial)
.then(function() {
devDealer.send([message.channel, wireutil.makeProbeMessage()])
})
})
.on(wire.DeviceIdentityMessage, function(channel, message) {
dbapi.saveDeviceIdentity(message.serial, message)