Skip to content
Snippets Groups Projects
Commit 55ef7cd7 authored by Sam Galson's avatar Sam Galson
Browse files

break apart validations

parent 27314847
No related branches found
No related tags found
No related merge requests found
......@@ -36,6 +36,7 @@ It can be called without arguments, in which case it will take its configuration
username: 'xxxxxx',
password: 'pppppp',
email: 'email@example.com',
clobber: false // overwrite existing db (optional)
collection: 'collection_title' // (optional)
}
}
......
const logger = require('@pubsweet/logger')
const winston = require('winston')
const { validateConfig } = require('./validations')
const config = require('config')
const { validateServerConfig } = require('./validations')
process.env.PUBSWEET_BACKEND_SILENT = true
logger.configure(winston)
validateConfig()
validateServerConfig(config.get('pubsweet-server'))
module.exports = {
setupDb: require('./setup-db/'),
addUser: require('./add-user/')
}
const logger = require('@pubsweet/logger')
const path = require('path')
const _ = require('lodash/fp')
const config = require('config')
const dbExists = require('../helpers/db-exists')
const generateEnv = require('./generate-env')
const setupDb = require('./setup-db')
const dbPath = require('../helpers/db-path')
const PouchDB = require('pouchdb')
const { validateSetupDbConfig } = require('../validations')
const checkNoDb = async () => {
const exists = await dbExists()
......@@ -21,12 +22,13 @@ const checkNoDb = async () => {
logger.info('Removed DB at', dbPath)
}
module.exports = async () => {
const setupDbConfig = config.get('dbManager')
module.exports = async (setupDbConfig) => {
const mergedDbConfig = _.merge(config.get('dbManager'), setupDbConfig)
validateSetupDbConfig(mergedDbConfig)
try {
await checkNoDb()
generateEnv()
return await setupDb(setupDbConfig)
return await setupDb(mergedDbConfig)
} catch (e) {
logger.error('Database setup failed')
throw e
......
const logger = require('@pubsweet/logger')
const config = require('config')
const _ = require('lodash/fp')
const createAdminUser = async (userData) => {
const User = require('pubsweet-server/src/models/User')
logger.info('Creating the admin user')
const user = new User({
username: userData.username,
email: userData.email,
password: userData.password,
admin: true
})
userData.admin = true
const user = new User(userData)
await user.save()
logger.info('Saved admin user: ', user.username)
......@@ -33,10 +28,9 @@ const createCollection = async (title, user) => {
return collection
}
module.exports = async (setupDbConfig) => {
const mergedDbConfig = _.merge({}, config.get('dbManager'), setupDbConfig)
module.exports = async (mergedDbConfig) => {
const collectionTitle = mergedDbConfig.collection
const userData = _.pick(['username','password','admin', 'email'], mergedDbConfig)
const userData = _.pick(['username', 'password', 'admin', 'email'], mergedDbConfig)
logger.info('Setting up the database')
const user = await createAdminUser(userData)
const collection = collectionTitle ? await createCollection(collectionTitle, user) : null
......
const Joi = require('joi')
const config = require('config')
const schemas = require('pubsweet-server/src/models/validations')
const _ = require('lodash/fp')
......@@ -11,19 +10,22 @@ const userSchema = Joi.object({
})
const setupDbSchema = userSchema.keys({
clobber: Joi.boolean().optional(),
collection: _.get('collection.title', schemas) || Joi.string().optional()
})
const schema = Joi.object({
dbManager: setupDbSchema.required(),
'pubsweet-server': Joi.object({
dbPath: Joi.string().required()
}).required()
const serverSchema = Joi.object({
dbPath: Joi.string().required()
})
module.exports = {
validateConfig: function validateConfig () {
const result = Joi.validate(config, schema, { allowUnknown: true })
validateServerConfig: function validateServerConfig (serverConfig) {
const result = Joi.validate(serverConfig, serverSchema, { allowUnknown: true })
if (result.error) throw result.error
return null
},
validateSetupDbConfig: function validateSetupDbConfig (setupDbConfig) {
const result = Joi.validate(setupDbConfig, setupDbSchema, { allowUnknown: true })
if (result.error) throw result.error
return null
},
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment