-
Notifications
You must be signed in to change notification settings - Fork 1
/
parser.js
39 lines (30 loc) · 1.14 KB
/
parser.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
const constants = require('./parser/constants.js')
const utilityService = require('./parser/services/utilities.js')
const categoriesService = require('./parser/services/getCategories.js')
const exercisesService = require('./parser/services/getExercises.js')
const detailsService = require('./parser/services/getExerciseDetails.js')
class ExercisesParser {
constructor () {
this.exercises = {}
}
async parse () {
const categories = await categoriesService.start()
this.exercises = await exercisesService.start(categories)
this.exercises = await detailsService.start(this.exercises)
this._generateDatabaseFiles()
}
async _generateDatabaseFiles () {
const categories = []
for (let category in this.exercises) {
await utilityService.writeFile(`${constants.dbPath}${category}.json`, this.exercises[category])
categories.push({
name: category,
exerciseCount: this.exercises[category].length
})
}
utilityService.writeFile(`${constants.dbPath}categories.json`, categories)
console.log('Database files successfully generated')
}
}
const parser = new ExercisesParser()
parser.parse()