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:
parent
483bf1be7a
commit
b84968c08c
2 changed files with 28 additions and 8 deletions
|
@ -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
|
||||||
|
|
|
@ -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)
|
||||||
})
|
})
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue