-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathJakefile.js
129 lines (128 loc) · 3.56 KB
/
Jakefile.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
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
desc('Reads 2016 olympian data from ./data');
task('readCSV', [], function () {
const parse = require('csv-parse')
const fs = require('fs')
const inputFile = './data/olympic_data_2016.csv'
const Game = require('./models').Game
const Olympian = require('./models').Olympian
const Sport = require('./models').Sport
const Olympian_Sport = require('./models').Olympian_Sport
const parser = parse({
columns: true
})
parser.on('readable', async () => {
let data
while (data = parser.read()) {
const dataObj = data
let medalWon = dataObj["Medal"]
if (dataObj["Medal"] === "NA") {
dataObj["Medal"] = null
}
if (dataObj["Height"] === "NA") {
dataObj["Height"] = null
}
if (dataObj["Weight"] === "NA") {
dataObj["Weight"] = null
}
let game = await Game.findOrCreate({where: {
name: dataObj["Games"],
}})
.then(([game, created]) => {
return game
})
let olympian = await Olympian.findOrCreate({where: {
name: dataObj["Name"],
age: dataObj["Age"],
sex: dataObj["Sex"],
height: dataObj["Height"],
weight: dataObj["Weight"],
team: dataObj["Team"]
}})
.then(([olympian, created]) => {
return olympian
})
let sport = await Sport.findOrCreate({where: {
name: dataObj["Sport"],
GameId: game.id
}})
.then(([sport, created]) => {
return sport
})
await Olympian_Sport.create({
event: dataObj["Event"],
medal: dataObj["Medal"],
SportId: sport.id,
OlympianId: olympian.id,
})
}
})
parser.on('error', function(err){
console.error(err.message)
})
fs.createReadStream(inputFile).pipe(parser);
complete();
}, true);
desc('Reads 2016 fixture data from ./spec');
task('loadTestData', [], function () {
const parse = require('csv-parse')
const fs = require('fs')
const inputFile = './spec/olympic_fixture_2016.csv'
const Game = require('./models').Game
const Olympian = require('./models').Olympian
const Sport = require('./models').Sport
const Olympian_Sport = require('./models').Olympian_Sport
const parser = parse({
columns: true
})
parser.on('readable', async () => {
let data
while (data = parser.read()) {
const dataObj = data
let medalWon = dataObj["Medal"]
if (dataObj["Medal"] === "NA") {
dataObj["Medal"] = null
}
if (dataObj["Height"] === "NA") {
dataObj["Height"] = null
}
if (dataObj["Weight"] === "NA") {
dataObj["Weight"] = null
}
let game = await Game.findOrCreate({where: {
name: dataObj["Games"],
}})
.then(([game, created]) => {
return game
})
let olympian = await Olympian.findOrCreate({where: {
name: dataObj["Name"],
age: dataObj["Age"],
sex: dataObj["Sex"],
height: dataObj["Height"],
weight: dataObj["Weight"],
team: dataObj["Team"]
}})
.then(([olympian, created]) => {
return olympian
})
let sport = await Sport.findOrCreate({where: {
name: dataObj["Sport"],
GameId: game.id
}})
.then(([sport, created]) => {
return sport
})
await Olympian_Sport.create({
event: dataObj["Event"],
medal: dataObj["Medal"],
SportId: sport.id,
OlympianId: olympian.id,
})
}
})
parser.on('error', function(err){
console.error(err.message)
})
fs.createReadStream(inputFile).pipe(parser);
complete();
});