mirror of
https://github.com/openstf/stf
synced 2025-10-04 10:19:30 +02:00
Add rethinkdb.
This commit is contained in:
parent
bbab0e6014
commit
23d068490e
5 changed files with 91 additions and 0 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -1,2 +1,3 @@
|
|||
/node_modules/
|
||||
/app/lib/
|
||||
/rethinkdb_data/
|
||||
|
|
22
lib/db/index.js
Normal file
22
lib/db/index.js
Normal file
|
@ -0,0 +1,22 @@
|
|||
var setup = require('./setup')
|
||||
var rutil = require('../util/rutil')
|
||||
var logger = require('../util/logger')
|
||||
|
||||
function connect() {
|
||||
var log = logger.createLogger('db')
|
||||
return rutil.connect({
|
||||
host: process.env.RDB_HOST || 'localhost'
|
||||
, port: process.env.RDB_PORT || 28015
|
||||
, db: process.env.RDB_DB || 'stf'
|
||||
, authKey: process.env.RDB_AUTHKEY
|
||||
})
|
||||
.then(function(conn) {
|
||||
conn.on('error', function(err) {
|
||||
log.fatal('Connection error', err.stack)
|
||||
process.exit(1)
|
||||
})
|
||||
return conn
|
||||
})
|
||||
}
|
||||
|
||||
module.exports = connect().then(setup)
|
46
lib/db/setup.js
Normal file
46
lib/db/setup.js
Normal file
|
@ -0,0 +1,46 @@
|
|||
var assert = require('assert')
|
||||
var util = require('util')
|
||||
|
||||
var r = require('rethinkdb')
|
||||
var Promise = require('bluebird')
|
||||
|
||||
var logger = require('../util/logger')
|
||||
var rutil = require('../util/rutil')
|
||||
var tables = require('./tables')
|
||||
|
||||
module.exports = function(conn) {
|
||||
var log = logger.createLogger('db:setup')
|
||||
|
||||
function createDatabase() {
|
||||
return rutil.run(conn, r.dbCreate(conn.db))
|
||||
.then(function() {
|
||||
log.info('Database "%s" created', conn.db)
|
||||
})
|
||||
.catch(rutil.errors.RqlRuntimeError, function(err) {
|
||||
var expected = util.format('Database `%s` already exists.', conn.db)
|
||||
assert.equal(expected, err.msg)
|
||||
log.info('Database "%s" already exists', conn.db)
|
||||
})
|
||||
}
|
||||
|
||||
function createTable(table, options) {
|
||||
return rutil.run(conn, r.tableCreate(table, options))
|
||||
.then(function() {
|
||||
log.info('Table "%s" created', table)
|
||||
return Promise.resolve()
|
||||
})
|
||||
.catch(rutil.errors.RqlRuntimeError, function(err) {
|
||||
var expected = util.format('Table `%s` already exists.', table)
|
||||
assert.equal(expected, err.msg)
|
||||
log.info('Table "%s" already exists', table)
|
||||
})
|
||||
}
|
||||
|
||||
return createDatabase()
|
||||
.then(function() {
|
||||
return Promise.all(Object.keys(tables).map(function(table) {
|
||||
return createTable(table, tables[table])
|
||||
}))
|
||||
})
|
||||
.return(conn)
|
||||
}
|
5
lib/db/tables.js
Normal file
5
lib/db/tables.js
Normal file
|
@ -0,0 +1,5 @@
|
|||
module.exports = {
|
||||
users: {
|
||||
primaryKey: 'id'
|
||||
}
|
||||
}
|
17
lib/util/rutil.js
Normal file
17
lib/util/rutil.js
Normal file
|
@ -0,0 +1,17 @@
|
|||
var r = require('rethinkdb')
|
||||
var re = require('rethinkdb/errors')
|
||||
var Promise = require('bluebird')
|
||||
|
||||
module.exports.errors = re
|
||||
|
||||
module.exports.connect = function(options) {
|
||||
var resolver = Promise.defer()
|
||||
r.connect(options, resolver.callback)
|
||||
return resolver.promise
|
||||
}
|
||||
|
||||
module.exports.run = function(conn, q) {
|
||||
var resolver = Promise.defer()
|
||||
q.run(conn, resolver.callback)
|
||||
return resolver.promise
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue