-
Notifications
You must be signed in to change notification settings - Fork 1
/
map_questions.js
83 lines (77 loc) · 1.97 KB
/
map_questions.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
var fs = require('fs');
var path = require('path');
var rimraf = require('rimraf');
var PouchDB = require('pouchdb');
var config = require('./config');
rimraf.sync(path.resolve(config.questionDbPath));
var db = new PouchDB(config.questionDbPath);
var tasks = [];
var binaryCSV = require('binary-csv');
var questionParser = binaryCSV({
separator: ';',
json: true
});
var testParser = binaryCSV({
separator: ',',
json: true
});
fs.createReadStream(path.join(__dirname, 'data', 'question_data.csv'))
.pipe(questionParser)
.on('data', function (line) {
if (line.id.match(/^q[1-9]/)) {
var op = db.put({
_id: line.id,
text: line.text,
option_1: line.option_1,
option_2: line.option_2,
option_3: line.option_3,
option_4: line.option_4,
N: line.N,
Type: line.Type,
Order: line.Order,
Keywords: line.Keywords,
option_1_count: 0,
option_2_count: 0,
option_3_count: 0,
option_4_count: 0
})
.catch(function (err) {
console.log('ERR', line.id, err);
throw err;
});
tasks.push(op);
}
})
.on('end', function () {
console.log('Question processing completed');
var questionCount = tasks.length;
fs.createReadStream(path.join(__dirname, 'data', 'test_items.csv'))
.pipe(testParser)
.on('data', function (line) {
if (line.id.match(/^q[1-9]/)) {
var op = db.get(line.id)
.then(function (doc) {
doc.option_correct = line.option_correct;
doc.Keywords += '; test';
return db.put(doc);
})
.catch(function (err) {
if (err.status === 404) return;
console.log('ERR', line.id, err);
throw err;
});
tasks.push(op);
}
})
.on('end', function () {
console.log('Test processing completed');
Promise.all(tasks)
.then(function () {
console.log('Successfully saved %d questions', questionCount);
})
.catch(function (err) {
console.log('ERROR');
console.log(err);
})
})
})