mirror of
https://github.com/openstf/stf
synced 2025-10-04 18:29:17 +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/
|
/node_modules/
|
||||||
/app/lib/
|
/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