Skip to content

Commit 56c9c33

Browse files
committed
refactor: improve populate script
1 parent f054a45 commit 56c9c33

File tree

3 files changed

+52
-46
lines changed

3 files changed

+52
-46
lines changed

models/polls/poll.schema.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { Document, Schema, Types } from 'mongoose';
22
import { User } from '../users/user.schema'
33

4-
interface ImageData {
4+
export interface ImageData {
55
url: string;
66
votes: number;
77
}

package-lock.json

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

populateDb.ts

Lines changed: 50 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -1,58 +1,64 @@
11
import mongoose from 'mongoose';
2-
import Promise from 'bluebird';
2+
import bluebird from 'bluebird';
33
import _ from 'lodash';
44
import app from './app';
55
import { UserSchema } from './models/users/user.schema';
6+
import { PollSchema, ImageData } from './models/polls/poll.schema';
67

78
mongoose.connect('mongodb://localhost:27017/which', { useNewUrlParser: true });
89

9-
const users = [
10-
{ name: "Emma" },
11-
{ name: "Elise" },
12-
{ name: "Jack" },
13-
{ name: "Oliver" },
14-
{ name: "Jamie" },
15-
{ name: "Aidan" },
16-
{ name: "Jordan" },
17-
{ name: "Erin" },
18-
{ name: "William" },
19-
{ name: "Ethan" },
10+
const POLLS_AMOUNT = 20;
11+
12+
const imageUrls: string[] = [
13+
// eslint-disable max-len
14+
'https://cdn.psychologytoday.com/sites/default/files/field_blog_entry_images/2019-06/pexels-photo-556667.jpeg',
15+
'https://images.pexels.com/photos/556666/pexels-photo-556666.jpeg?auto=compress&cs=tinysrgb&dpr=1&w=500',
16+
'https://i.pinimg.com/originals/50/91/3e/50913eeb04768a5b1fa9985c16704d96.jpg',
17+
'https://grazia.wwmindia.com/photogallery/2017/apr/1_1491461089.jpg'
2018
];
2119

22-
const polls = [{
23-
contents: {
24-
left:{
25-
url: 'https://cdn.psychologytoday.com/sites/default/files/field_blog_entry_images/2019-06/pexels-photo-556667.jpeg',
26-
votes: Math.floor(Math.random() * 101)
27-
},
28-
right:{
29-
url: 'https://images.pexels.com/photos/556666/pexels-photo-556666.jpeg?auto=compress&cs=tinysrgb&dpr=1&w=500',
30-
votes: Math.floor(Math.random() * 101)
31-
}
32-
}
33-
},{
34-
contents: {
35-
left:{
36-
url: 'https://cdn.psychologytoday.com/sites/default/files/field_blog_entry_images/2019-06/pexels-photo-556667.jpeg',
37-
votes: Math.floor(Math.random() * 101)
38-
},
39-
right:{
40-
url: 'https://images.pexels.com/photos/556666/pexels-photo-556666.jpeg?auto=compress&cs=tinysrgb&dpr=1&w=500',
41-
votes: Math.floor(Math.random() * 101)
42-
}
43-
}
44-
}];
20+
const names: string[] = [
21+
'Emma',
22+
'Elise',
23+
'Jack',
24+
'Oliver',
25+
'Jamie',
26+
'Adam',
27+
'Jordan',
28+
'William'
29+
];
4530

46-
const populate = async () => {
47-
const createdUsers = await Promise.map(users, async user => {
48-
return await app.service('users').create(user);
31+
const generateImageData = (): ImageData => ({
32+
url: _.sample(imageUrls) || '',
33+
votes: Math.floor(Math.random() * 101)
34+
});
35+
36+
const createPoll = (authorId: string): Promise<PollSchema> => {
37+
return app.service('polls').create({
38+
contents: {
39+
left: generateImageData(),
40+
right: generateImageData(),
41+
},
42+
authorId
4943
});
50-
console.log(createdUsers);
51-
await Promise.map(polls, async poll => {
52-
const user = _.sample(createdUsers);
53-
return await app.service('polls').create({...poll, authorId: user._id});
44+
};
45+
46+
const createUser = (name: string): Promise<UserSchema> => {
47+
return app.service('users').create({
48+
avatarUrl: _.sample(imageUrls) || '',
49+
name
5450
});
55-
mongoose.disconnect();
5651
};
5752

58-
populate();
53+
54+
const populate = async () => {
55+
const users = await bluebird.map(names, name => createUser(name));
56+
57+
for (let i = 0; i < POLLS_AMOUNT; i++) {
58+
const sampleUser = _.sample(users);
59+
await createPoll(sampleUser?._id);
60+
};
61+
};
62+
63+
populate().finally(mongoose.disconnect);
64+

0 commit comments

Comments
 (0)