1- import * as scuid from 'scuid' ;
1+ import * as scuid from 'scuid'
22
3- import { generateAuthToken , getUserId , likelyTopics } from '../utils' ;
3+ import {
4+ generateAuthToken ,
5+ getUserId ,
6+ likelyTopics ,
7+ predefinedUsers ,
8+ } from '../utils'
49
5- const DEFAULT_COUNT = 25 ;
10+ const DEFAULT_COUNT = 25
611
712export default {
813 Query : {
914 me : ( parent , args , ctx ) => {
10- const userId = getUserId ( ctx ) ;
11- const { faker } = ctx ;
15+ const userId = getUserId ( ctx )
16+ const { faker } = ctx
1217
1318 return {
1419 id : userId ,
1520 firstName : faker . name . firstName ( ) ,
1621 lastName : faker . name . lastName ( ) ,
1722 email : faker . internet . email ( ) ,
18- avatar : faker . image . avatar ( )
19- } ;
23+ avatar : faker . image . avatar ( ) ,
24+ }
2025 } ,
2126
22- allUsers ( parent , { count = DEFAULT_COUNT } , { faker } ) {
23- return new Array ( count ) . fill ( 0 ) . map ( _ => ( {
24- id : scuid ( ) ,
27+ allUsers : ( parent , { count = DEFAULT_COUNT } , { faker } ) =>
28+ predefinedUsers . slice ( 0 , count ) ,
29+
30+ User : ( parent , { id } , { faker } ) =>
31+ predefinedUsers . filter ( ( user ) => user . id === id ) [ 0 ] || {
32+ id,
2533 firstName : faker . name . firstName ( ) ,
2634 lastName : faker . name . lastName ( ) ,
2735 email : faker . internet . email ( ) ,
28- avatar : faker . image . avatar ( )
29- } ) ) ;
30- } ,
31-
32- User : ( parent , { id } , { faker } ) => ( {
33- id,
34- firstName : faker . name . firstName ( ) ,
35- lastName : faker . name . lastName ( ) ,
36- email : faker . internet . email ( ) ,
37- avatar : faker . image . avatar ( )
38- } ) ,
36+ avatar : faker . image . avatar ( ) ,
37+ } ,
3938
4039 allProducts : ( parent , { count = DEFAULT_COUNT } , { faker } ) => {
41- return new Array ( count ) . fill ( 0 ) . map ( _ => ( {
40+ return new Array ( count ) . fill ( 0 ) . map ( ( _ ) => ( {
4241 id : scuid ( ) ,
4342 price : faker . commerce . price ( ) ,
44- name : faker . commerce . productName ( )
45- } ) ) ;
43+ name : faker . commerce . productName ( ) ,
44+ } ) )
4645 } ,
4746
4847 Product : ( parent , { id } , { faker } ) => ( {
4948 id,
5049 price : faker . commerce . price ( ) ,
51- name : faker . commerce . productName ( )
50+ name : faker . commerce . productName ( ) ,
5251 } ) ,
5352
5453 Todo : ( parent , { id } , { faker } ) => ( {
5554 id,
5655 title : faker . random . words ( ) ,
57- completed : faker . random . boolean ( )
56+ completed : faker . random . boolean ( ) ,
5857 } ) ,
5958
6059 allTodos : ( parent , { count = DEFAULT_COUNT } , { faker } ) => {
61- return new Array ( count ) . fill ( 0 ) . map ( _ => ( {
60+ return new Array ( count ) . fill ( 0 ) . map ( ( _ ) => ( {
6261 id : scuid ( ) ,
6362 title : faker . random . words ( ) ,
64- completed : faker . random . boolean ( )
65- } ) ) ;
63+ completed : faker . random . boolean ( ) ,
64+ } ) )
6665 } ,
6766
6867 // refactor user relation into Class
6968 Post : ( parent , { id } , { faker } ) => {
70- const title = faker . random . words ( ) ;
71- const body = faker . lorem . paragraphs ( ) ;
72- const firstName = faker . name . firstName ( ) ;
73- const lastName = faker . name . lastName ( ) ;
69+ const title = faker . random . words ( )
70+ const body = faker . lorem . paragraphs ( )
71+ const firstName = faker . name . firstName ( )
72+ const lastName = faker . name . lastName ( )
7473 return {
7574 id,
7675 title,
7776 body,
7877 published : faker . random . boolean ( ) ,
79- createdAt : faker . date . past ( ) ,
78+ createdAt : faker . date . between (
79+ new Date ( '2019-01-01' ) ,
80+ new Date ( '2019-12-31' ) ,
81+ ) ,
8082 author : {
8183 id : scuid ( ) ,
8284 firstName,
8385 lastName,
8486 email : faker . internet . email ( ) ,
85- avatar : faker . image . avatar ( )
87+ avatar : faker . image . avatar ( ) ,
8688 } ,
87- likelyTopics : likelyTopics (
88- `${ firstName } ${ lastName } ` ,
89- title , body
90- )
91- } ;
89+ likelyTopics : likelyTopics ( `${ firstName } ${ lastName } ` , title , body ) ,
90+ }
9291 } ,
9392
9493 // refactor user relation into Class
9594 allPosts : ( parent , { count } , { faker } ) => {
96- return new Array ( count ) . fill ( 0 ) . map ( _ => {
97- const title = faker . random . words ( ) ;
98- const body = faker . lorem . paragraphs ( ) ;
99- const firstName = faker . name . firstName ( ) ;
100- const lastName = faker . name . lastName ( ) ;
95+ const usersToUse = predefinedUsers . slice (
96+ 0 ,
97+ count > 200 ? Math . ceil ( count / 50 ) : Math . ceil ( count / 20 ) ,
98+ )
99+ return new Array ( count ) . fill ( 0 ) . map ( ( _ ) => {
100+ const title = faker . random . words ( )
101+ const body = faker . lorem . paragraphs ( )
102+ const user = usersToUse [ Math . floor ( Math . random ( ) * usersToUse . length ) ]
103+ const firstName = user . firstName
104+ const lastName = user . lastName
101105 return {
102106 id : scuid ( ) ,
103107 title,
104108 body,
105109 published : faker . random . boolean ( ) ,
106- createdAt : faker . date . past ( ) ,
107- author : {
108- id : scuid ( ) ,
109- firstName,
110- lastName,
111- email : faker . internet . email ( ) ,
112- avatar : faker . image . avatar ( )
113- } ,
114- likelyTopics : likelyTopics (
115- `${ firstName } ${ lastName } ` ,
116- title , body
117- )
110+ createdAt : faker . date . between (
111+ new Date ( '2019-01-01' ) ,
112+ new Date ( '2019-12-31' ) ,
113+ ) ,
114+ author : user ,
115+ likelyTopics : likelyTopics ( `${ firstName } ${ lastName } ` , title , body ) ,
118116 }
119- } ) ;
120- }
117+ } )
118+ } ,
121119 } ,
122120
123121 Mutation : {
124122 register : async (
125123 parent ,
126124 { email, password, expiresIn = '2d' } ,
127125 { jwtSecret } ,
128- info
126+ info ,
129127 ) => ( {
130128 token : await generateAuthToken (
131129 { userId : scuid ( ) , email } ,
132130 jwtSecret ,
133- expiresIn
134- )
131+ expiresIn ,
132+ ) ,
135133 } ) ,
136134
137135 login : async (
138136 parent ,
139137 { email, password, expiresIn = '2d' } ,
140138 { jwtSecret } ,
141- info
139+ info ,
142140 ) => ( {
143141 token : await generateAuthToken (
144142 { email, userId : scuid ( ) } ,
145143 jwtSecret ,
146- expiresIn
147- )
144+ expiresIn ,
145+ ) ,
148146 } ) ,
149147
150148 updateUser : ( parent , { id, firstName, lastName, email, avatar } , ctx ) => {
151- const userId = getUserId ( ctx ) ;
152- const { faker } = ctx ;
149+ const userId = getUserId ( ctx )
150+ const { faker } = ctx
153151
154152 return {
155153 id : userId ,
156154 firstName : firstName === undefined ? faker . name . firstName ( ) : firstName ,
157155 lastName : lastName === undefined ? faker . name . lastName ( ) : lastName ,
158156 email : email === undefined ? faker . internet . email ( ) : email ,
159- avatar : avatar === undefined ? faker . image . avatar ( ) : avatar
160- } ;
157+ avatar : avatar === undefined ? faker . image . avatar ( ) : avatar ,
158+ }
161159 } ,
162160
163161 // No authentication for demo purposes
164162 createTodo : ( parent , { title, completed } , { faker } ) => {
165- const id = scuid ( ) ;
163+ const id = scuid ( )
166164
167165 // pubsub.publish('todoAdded', {
168166 // todoAdded: {
@@ -175,10 +173,10 @@ export default {
175173 return {
176174 id,
177175 title,
178- completed : completed === undefined ? faker . random . boolean ( ) : completed
179- } ;
180- }
181- }
176+ completed : completed === undefined ? faker . random . boolean ( ) : completed ,
177+ }
178+ } ,
179+ } ,
182180
183181 // Subscription: {
184182 // todoAdded: {
@@ -196,4 +194,4 @@ export default {
196194 // }
197195 // }
198196 // }
199- } ;
197+ }
0 commit comments