From bcb1d40e319e5fe6f27731b5c7897fa00f5c18e8 Mon Sep 17 00:00:00 2001 From: thebearingedge Date: Sun, 17 Mar 2019 17:11:55 -0700 Subject: [PATCH] Set up seed scripts for development vs production. #1 --- app.json | 7 +++++-- database/seeds/__dev__.js | 2 +- database/seeds/{dev => development}/index.js | 3 +-- database/seeds/production/index.js | 12 ++++++++++++ server/index.js | 6 +++++- 5 files changed, 24 insertions(+), 6 deletions(-) rename database/seeds/{dev => development}/index.js (82%) create mode 100644 database/seeds/production/index.js diff --git a/app.json b/app.json index 7a81dbb..9bb665e 100644 --- a/app.json +++ b/app.json @@ -6,10 +6,13 @@ "heroku-redis" ], "env": { - "DATABASE_URL": { + "ADMIN_USER_ID": { "required": true }, - "REDIS_URL": { + "ADMIN_USERNAME": { + "required": true + }, + "ADMIN_PASSWORD": { "required": true }, "JWT_SECRET": { diff --git a/database/seeds/__dev__.js b/database/seeds/__dev__.js index d93aae5..584b777 100644 --- a/database/seeds/__dev__.js +++ b/database/seeds/__dev__.js @@ -6,7 +6,7 @@ import getConnections from '../get-connections' try { await redis.flushallAsync() await knex.seed.run({ - directory: path.join(__dirname, 'dev/') + directory: path.join(__dirname, 'development/') }) await knex.destroy() await redis.quitAsync() diff --git a/database/seeds/dev/index.js b/database/seeds/development/index.js similarity index 82% rename from database/seeds/dev/index.js rename to database/seeds/development/index.js index f7d3ff5..8889ac4 100644 --- a/database/seeds/dev/index.js +++ b/database/seeds/development/index.js @@ -12,7 +12,7 @@ export async function seed(knex) { } catch (err) { console.error(err) - console.error(chalk.red(`ERROR:Failed to run seed script for ${description}.`)) + console.error(chalk.red(`ERROR: Failed to run seed script for ${description}.`)) process.exit(1) } })(knex) @@ -20,7 +20,6 @@ export async function seed(knex) { console.log('\n') await trySeed(admin, 'admin user') - await admin.seed(knex) console.log('\n') } diff --git a/database/seeds/production/index.js b/database/seeds/production/index.js new file mode 100644 index 0000000..f977b9d --- /dev/null +++ b/database/seeds/production/index.js @@ -0,0 +1,12 @@ +import * as admin from '../admin' + +export async function seed(knex) { + const user = await knex + .select(['userId']) + .from('users') + .where({ username: admin.user.username }) + .first() + if (!user) return admin.seed(knex) +} + +export default seed diff --git a/server/index.js b/server/index.js index d6074f5..ad402a7 100644 --- a/server/index.js +++ b/server/index.js @@ -1,5 +1,6 @@ import pgBump from 'pg-bump' import createServer from './create-server' +import seed from '../database/seeds/prod' import getConnections from '../database/get-connections' ;(async () => { @@ -8,13 +9,16 @@ import getConnections from '../database/get-connections' console.log(Object.keys(process.env)) console.log('Acquiring database connections...') const { knex, redis } = await getConnections() + console.log('Connections established.') console.log('Running latest migrations...') await pgBump.up({ files: 'database/migrations/', connectionVar: 'DATABASE_URL', journalTable: 'schema_journal' }) - console.log('Connections established.') + console.log('Seeding database if needed...') + await seed(knex) + console.log('Database seeded.') const dev = process.env.NODE_ENV !== 'production' const server = await createServer({ dev, knex, redis }) server.listen(process.env.PORT, () => {