1
1
import mongoose from 'mongoose' ;
2
2
import bluebird from 'bluebird' ;
3
3
import _ from 'lodash' ;
4
+ import { User , Poll , Vote } from 'which-types' ;
5
+
4
6
import app from './app' ;
5
- import { UserSchema } from './models/users/user.schema' ;
6
- import { PollSchema , ImageDataSchema } from './models/polls/poll.schema' ;
7
7
8
8
mongoose . connect ( 'mongodb://localhost:27017/which' , { useNewUrlParser : true } ) ;
9
9
10
10
const POLLS_AMOUNT = 20 ;
11
+ const VOTES_AMOUNT = 160 ;
11
12
12
13
const imageUrls : string [ ] = [
13
14
// eslint-disable max-len
@@ -28,8 +29,17 @@ const names: string[] = [
28
29
'William'
29
30
] ;
30
31
32
+ const choices = [
33
+ 'left' ,
34
+ 'right'
35
+ ] ;
36
+
37
+
38
+ const createPoll = ( authorId : string ) : Promise < Poll > => {
39
+ const generateImageData = ( ) => ( {
40
+ url : _ . sample ( imageUrls ) || '' ,
41
+ } ) ;
31
42
32
- const createPoll = ( authorId : string , generateImageData :( ) => ImageDataSchema ) : Promise < PollSchema > => {
33
43
return app . service ( 'polls' ) . create ( {
34
44
contents : {
35
45
left : generateImageData ( ) ,
@@ -39,26 +49,36 @@ const createPoll = (authorId: string, generateImageData:()=> ImageDataSchema): P
39
49
} ) ;
40
50
} ;
41
51
42
- const createUser = ( username : string ) : Promise < UserSchema > => {
52
+ const createUser = ( username : string ) : Promise < User > => {
43
53
return app . service ( 'users' ) . create ( {
44
54
avatarUrl : _ . sample ( imageUrls ) || '' ,
45
55
password : 'supersecret' ,
46
56
username
47
57
} ) ;
48
58
} ;
49
59
60
+ const createVote = ( userId : string , pollId : string ) : Promise < Vote > => {
61
+ return app . service ( 'votes' ) . create ( {
62
+ userId,
63
+ pollId,
64
+ which : _ . sample ( choices )
65
+ } ) ;
66
+ }
67
+
50
68
51
69
const populate = async ( ) => {
52
70
const users = await bluebird . map ( names , name => createUser ( name ) ) ;
53
71
54
- const generateImageData = ( ) : ImageDataSchema => ( {
55
- url : _ . sample ( imageUrls ) || '' ,
56
- votes : _ . sampleSize ( users . map ( user => user . _id ) , Math . floor ( Math . random ( ) * users . length ) )
72
+ const polls = await bluebird . mapSeries ( new Array ( POLLS_AMOUNT ) , async ( ) => {
73
+ const user = _ . sample ( users ) ;
74
+ return createPoll ( user ?. _id || '' ) ;
75
+
57
76
} ) ;
58
77
59
- await bluebird . mapSeries ( new Array ( POLLS_AMOUNT ) , async ( ) => {
60
- const sampleUser = _ . sample ( users ) ;
61
- return createPoll ( sampleUser ?. _id , generateImageData ) ;
78
+ const votes = await bluebird . mapSeries ( new Array ( VOTES_AMOUNT ) , async ( ) => {
79
+ const user = _ . sample ( users ) ;
80
+ const poll = _ . sample ( polls ) ;
81
+ return createVote ( user ?. _id || '' , poll ?. _id || '' ) ;
62
82
} ) ;
63
83
} ;
64
84
0 commit comments