1
0
Fork 0
mirror of https://github.com/openstf/stf synced 2025-10-04 18:29:17 +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 r = require('rethinkdb')
var Promise = require('bluebird')
var db = require('./') var db = require('./')
var wire = require('../wire') var wire = require('../wire')
var wireutil = require('../wire/util') 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({ return db.run(r.table('users').get(user.email).update({
name: user.name name: user.name
, lastLoggedInAt: r.now() , 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)) 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({ return db.run(r.table('logs').insert({
serial: entry.serial serial: entry.serial
, timestamp: r.epochTime(entry.timestamp) , 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({ return db.run(r.table('devices').get(serial).update({
status: status.status status: status.status
, provider: status.provider , 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({ return db.run(r.table('devices').get(serial).update({
platform: identity.platform platform: identity.platform
, manufacturer: identity.manufacturer , 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')) return db.run(r.table('devices'))
} }
module.exports.loadDevice = function(serial) { dbapi.loadDevice = function(serial) {
return db.run(r.table('devices').get(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,8 +43,11 @@ module.exports = function(options) {
appDealer.send([channel, data]) appDealer.send([channel, data])
}) })
.on(wire.DevicePokeMessage, function(channel, message) { .on(wire.DevicePokeMessage, function(channel, message) {
dbapi.ensureDeviceSaved(message.serial)
.then(function() {
devDealer.send([message.channel, wireutil.makeProbeMessage()]) devDealer.send([message.channel, wireutil.makeProbeMessage()])
}) })
})
.on(wire.DeviceIdentityMessage, function(channel, message) { .on(wire.DeviceIdentityMessage, function(channel, message) {
dbapi.saveDeviceIdentity(message.serial, message) dbapi.saveDeviceIdentity(message.serial, message)
}) })