From 1cecd0202f6f891d5f76132ee17353c6e35d91a8 Mon Sep 17 00:00:00 2001 From: ilyayudovin Date: Thu, 11 Jun 2020 19:44:52 +0300 Subject: feat: add populateDb script --- populateDb.ts | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 populateDb.ts (limited to 'populateDb.ts') diff --git a/populateDb.ts b/populateDb.ts new file mode 100644 index 0000000..1442350 --- /dev/null +++ b/populateDb.ts @@ -0,0 +1,28 @@ +import mongoose from 'mongoose'; +import app from './app'; + +mongoose.connect('mongodb://localhost:27017/which', { useNewUrlParser: true }); + +import UserModel from './models/users/user.model'; +(async () => { + const users = [ + { name: "Emma" }, + { name: "Elise" }, + { name: "Jack" }, + { name: "Oliver" }, + { name: "Jamie" }, + { name: "Aidan" }, + { name: "Jordan" }, + { name: "Erin" }, + { name: "William" }, + { name: "Ethan" }, + ]; + try { + for (const user of users) { + await UserModel.create(user); + } + } catch (e) { + console.error(e); + } + mongoose.disconnect(); +})(); \ No newline at end of file -- cgit v1.2.3 From 72a89f5eff0a7b93d5cc5cf81255b9a1efcf20f1 Mon Sep 17 00:00:00 2001 From: eug-vs Date: Thu, 11 Jun 2020 20:03:35 +0300 Subject: refactor: improve script --- populateDb.ts | 42 +++++++++++++++++++----------------------- 1 file changed, 19 insertions(+), 23 deletions(-) (limited to 'populateDb.ts') diff --git a/populateDb.ts b/populateDb.ts index 1442350..6f5beaf 100644 --- a/populateDb.ts +++ b/populateDb.ts @@ -1,28 +1,24 @@ import mongoose from 'mongoose'; +import Promise from 'bluebird'; import app from './app'; mongoose.connect('mongodb://localhost:27017/which', { useNewUrlParser: true }); -import UserModel from './models/users/user.model'; -(async () => { - const users = [ - { name: "Emma" }, - { name: "Elise" }, - { name: "Jack" }, - { name: "Oliver" }, - { name: "Jamie" }, - { name: "Aidan" }, - { name: "Jordan" }, - { name: "Erin" }, - { name: "William" }, - { name: "Ethan" }, - ]; - try { - for (const user of users) { - await UserModel.create(user); - } - } catch (e) { - console.error(e); - } - mongoose.disconnect(); -})(); \ No newline at end of file +const users = [ + { name: "Emma" }, + { name: "Elise" }, + { name: "Jack" }, + { name: "Oliver" }, + { name: "Jamie" }, + { name: "Aidan" }, + { name: "Jordan" }, + { name: "Erin" }, + { name: "William" }, + { name: "Ethan" }, +]; + +Promise.map(users, async user => { + return await app.service('users').create(user); +}).catch(e => console.error(e)) + .finally(() => mongoose.disconnect()); + -- cgit v1.2.3 From 2b876318d2aeca5183e0a57277904c7332a7aa0e Mon Sep 17 00:00:00 2001 From: ilyayudovin Date: Thu, 11 Jun 2020 21:19:18 +0300 Subject: feat: add populate function --- populateDb.ts | 42 ++++++++++++++++++++++++++++++++++++++---- 1 file changed, 38 insertions(+), 4 deletions(-) (limited to 'populateDb.ts') diff --git a/populateDb.ts b/populateDb.ts index 6f5beaf..732cb51 100644 --- a/populateDb.ts +++ b/populateDb.ts @@ -1,6 +1,8 @@ import mongoose from 'mongoose'; import Promise from 'bluebird'; +import _ from 'lodash'; import app from './app'; +import { UserSchema } from './models/users/user.schema'; mongoose.connect('mongodb://localhost:27017/which', { useNewUrlParser: true }); @@ -17,8 +19,40 @@ const users = [ { name: "Ethan" }, ]; -Promise.map(users, async user => { - return await app.service('users').create(user); -}).catch(e => console.error(e)) - .finally(() => mongoose.disconnect()); +const polls = [{ + contents: { + left:{ + url: 'https://cdn.psychologytoday.com/sites/default/files/field_blog_entry_images/2019-06/pexels-photo-556667.jpeg', + votes: 0 + }, + right:{ + url: 'https://images.pexels.com/photos/556666/pexels-photo-556666.jpeg?auto=compress&cs=tinysrgb&dpr=1&w=500', + votes: 0 + } + } +},{ + contents: { + left:{ + url: 'https://cdn.psychologytoday.com/sites/default/files/field_blog_entry_images/2019-06/pexels-photo-556667.jpeg', + votes: 0 + }, + right:{ + url: 'https://images.pexels.com/photos/556666/pexels-photo-556666.jpeg?auto=compress&cs=tinysrgb&dpr=1&w=500', + votes: 0 + } + } +}]; +const populate = async () => { + const createdUsers = await Promise.map(users, async user => { + return await app.service('users').create(user); + }); + console.log(createdUsers); + await Promise.map(polls, async poll => { + const user = _.sample(createdUsers); + return await app.service('polls').create({...poll, authorId: user._id}); + }); + mongoose.disconnect(); +}; + +populate(); \ No newline at end of file -- cgit v1.2.3 From f054a45cbefae5a6e7736af85e173fc7214dcc2c Mon Sep 17 00:00:00 2001 From: ilyayudovin Date: Thu, 11 Jun 2020 21:30:25 +0300 Subject: feat: add generate votes --- populateDb.ts | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) (limited to 'populateDb.ts') diff --git a/populateDb.ts b/populateDb.ts index 732cb51..88cb6a6 100644 --- a/populateDb.ts +++ b/populateDb.ts @@ -23,23 +23,23 @@ const polls = [{ contents: { left:{ url: 'https://cdn.psychologytoday.com/sites/default/files/field_blog_entry_images/2019-06/pexels-photo-556667.jpeg', - votes: 0 - }, + votes: Math.floor(Math.random() * 101) +}, right:{ url: 'https://images.pexels.com/photos/556666/pexels-photo-556666.jpeg?auto=compress&cs=tinysrgb&dpr=1&w=500', - votes: 0 - } + votes: Math.floor(Math.random() * 101) +} } },{ contents: { left:{ url: 'https://cdn.psychologytoday.com/sites/default/files/field_blog_entry_images/2019-06/pexels-photo-556667.jpeg', - votes: 0 - }, + votes: Math.floor(Math.random() * 101) +}, right:{ url: 'https://images.pexels.com/photos/556666/pexels-photo-556666.jpeg?auto=compress&cs=tinysrgb&dpr=1&w=500', - votes: 0 - } + votes: Math.floor(Math.random() * 101) +} } }]; -- cgit v1.2.3 From 56c9c3355c6e27e2b014315583e0c90cc073937f Mon Sep 17 00:00:00 2001 From: eug-vs Date: Fri, 12 Jun 2020 04:52:24 +0300 Subject: refactor: improve populate script --- populateDb.ts | 94 +++++++++++++++++++++++++++++++---------------------------- 1 file changed, 50 insertions(+), 44 deletions(-) (limited to 'populateDb.ts') diff --git a/populateDb.ts b/populateDb.ts index 88cb6a6..8000111 100644 --- a/populateDb.ts +++ b/populateDb.ts @@ -1,58 +1,64 @@ import mongoose from 'mongoose'; -import Promise from 'bluebird'; +import bluebird from 'bluebird'; import _ from 'lodash'; import app from './app'; import { UserSchema } from './models/users/user.schema'; +import { PollSchema, ImageData } from './models/polls/poll.schema'; mongoose.connect('mongodb://localhost:27017/which', { useNewUrlParser: true }); -const users = [ - { name: "Emma" }, - { name: "Elise" }, - { name: "Jack" }, - { name: "Oliver" }, - { name: "Jamie" }, - { name: "Aidan" }, - { name: "Jordan" }, - { name: "Erin" }, - { name: "William" }, - { name: "Ethan" }, +const POLLS_AMOUNT = 20; + +const imageUrls: string[] = [ + // eslint-disable max-len + 'https://cdn.psychologytoday.com/sites/default/files/field_blog_entry_images/2019-06/pexels-photo-556667.jpeg', + 'https://images.pexels.com/photos/556666/pexels-photo-556666.jpeg?auto=compress&cs=tinysrgb&dpr=1&w=500', + 'https://i.pinimg.com/originals/50/91/3e/50913eeb04768a5b1fa9985c16704d96.jpg', + 'https://grazia.wwmindia.com/photogallery/2017/apr/1_1491461089.jpg' ]; -const polls = [{ - contents: { - left:{ - url: 'https://cdn.psychologytoday.com/sites/default/files/field_blog_entry_images/2019-06/pexels-photo-556667.jpeg', - votes: Math.floor(Math.random() * 101) -}, - right:{ - url: 'https://images.pexels.com/photos/556666/pexels-photo-556666.jpeg?auto=compress&cs=tinysrgb&dpr=1&w=500', - votes: Math.floor(Math.random() * 101) -} - } -},{ - contents: { - left:{ - url: 'https://cdn.psychologytoday.com/sites/default/files/field_blog_entry_images/2019-06/pexels-photo-556667.jpeg', - votes: Math.floor(Math.random() * 101) -}, - right:{ - url: 'https://images.pexels.com/photos/556666/pexels-photo-556666.jpeg?auto=compress&cs=tinysrgb&dpr=1&w=500', - votes: Math.floor(Math.random() * 101) -} - } -}]; +const names: string[] = [ + 'Emma', + 'Elise', + 'Jack', + 'Oliver', + 'Jamie', + 'Adam', + 'Jordan', + 'William' +]; -const populate = async () => { - const createdUsers = await Promise.map(users, async user => { - return await app.service('users').create(user); +const generateImageData = (): ImageData => ({ + url: _.sample(imageUrls) || '', + votes: Math.floor(Math.random() * 101) +}); + +const createPoll = (authorId: string): Promise => { + return app.service('polls').create({ + contents: { + left: generateImageData(), + right: generateImageData(), + }, + authorId }); - console.log(createdUsers); - await Promise.map(polls, async poll => { - const user = _.sample(createdUsers); - return await app.service('polls').create({...poll, authorId: user._id}); +}; + +const createUser = (name: string): Promise => { + return app.service('users').create({ + avatarUrl: _.sample(imageUrls) || '', + name }); - mongoose.disconnect(); }; -populate(); \ No newline at end of file + +const populate = async () => { + const users = await bluebird.map(names, name => createUser(name)); + + for (let i = 0; i < POLLS_AMOUNT; i++) { + const sampleUser = _.sample(users); + await createPoll(sampleUser?._id); + }; +}; + +populate().finally(mongoose.disconnect); + -- cgit v1.2.3