1
1
import mongoose from 'mongoose' ;
2
- import Promise from 'bluebird' ;
2
+ import bluebird from 'bluebird' ;
3
3
import _ from 'lodash' ;
4
4
import app from './app' ;
5
5
import { UserSchema } from './models/users/user.schema' ;
6
+ import { PollSchema , ImageData } from './models/polls/poll.schema' ;
6
7
7
8
mongoose . connect ( 'mongodb://localhost:27017/which' , { useNewUrlParser : true } ) ;
8
9
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'
20
18
] ;
21
19
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
+ ] ;
45
30
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
49
43
} ) ;
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
54
50
} ) ;
55
- mongoose . disconnect ( ) ;
56
51
} ;
57
52
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