This repository has been archived by the owner on May 26, 2022. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 161
/
seed-mutations.js
91 lines (85 loc) · 2.47 KB
/
seed-mutations.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
const fetch = require('node-fetch')
const parse = require('csv-parse/lib/sync')
const { gql } = require('@apollo/client')
export const getSeedMutations = async () => {
const res = await fetch(
'https://cdn.neo4jlabs.com/data/grandstack_businesses.csv'
)
const body = await res.text()
const records = parse(body, { columns: true })
const mutations = generateMutations(records)
return mutations
}
const generateMutations = (records) => {
return records.map((rec) => {
Object.keys(rec).map((k) => {
if (k === 'latitude' || k === 'longitude' || k === 'reviewStars') {
rec[k] = parseFloat(rec[k])
} else if (k === 'reviewDate') {
const dateParts = rec[k].split('-')
rec['year'] = parseInt(dateParts[0])
rec['month'] = parseInt(dateParts[1])
rec['day'] = parseInt(dateParts[2])
} else if (k === 'categories') {
rec[k] = rec[k].split(',')
}
})
return {
mutation: gql`
mutation mergeReviews(
$userId: ID!
$userName: String!
$businessId: ID!
$businessName: String!
$businessCity: String!
$businessState: String!
$businessAddress: String!
$latitude: Float!
$longitude: Float!
$reviewId: ID!
$reviewText: String
$reviewDate: DateTime
$reviewStars: Float
$categories: [String!]!
) {
user: mergeUser(userId: $userId, name: $userName) {
userId
}
business: mergeBusiness(
businessId: $businessId
name: $businessName
address: $businessAddress
city: $businessCity
state: $businessState
latitude: $latitude
longitude: $longitude
) {
businessId
}
businessCategories: mergeBusinessCategory(
categories: $categories
businessId: $businessId
) {
businessId
}
reviews: createReviews(
input: {
reviewId: $reviewId
stars: $reviewStars
text: $reviewText
date: $reviewDate
business: { connect: { where: { businessId: $businessId } } }
user: { connect: { where: { userId: $userId } } }
}
) {
reviews {
reviewId
date
}
}
}
`,
variables: rec,
}
})
}