aboutsummaryrefslogtreecommitdiff
path: root/parseClasses.js
blob: fd48768369f5970dd9ad2facd723aae8506d06db (plain)
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
const open = require("./Functions/open.js");
const parse = require("./dbparse.js");
const fs = require("fs");
const readline = require("readline");
const stream = require("stream");
const getIndexType = require("./dbparse.js").indexType;

async function parseClassData(classes, DB)
{
	const separator = "\t";

	classes = classes.split('\n');
	let lineNum = 0;
	let courses = [];
	for(let line of classes) {
		let lineList = line.split(separator);

		let type = getIndexType(lineList[0]);
		if (!((type === "class") || (type === "teacher")))
			lineNum = 0;
        
		if (lineNum % 3 === 0)
			courses = lineList;
		if ((lineNum % 3) === 2)
		{
			// Remove the weird "R":s in the end of the classes
			for(let i = 0; i < lineList.length; i++)
			{
				let _s = lineList[i];
				lineList[i] = _s.substring(0, _s.length - 1);
			}
			addToDBFromLists(DB, courses, lineList,
				index => { return getIndexType(index) === "course"; },
				index => { return getIndexType(index) === "class"; }
			);
		}
		lineNum++
	}
	return 0;
}

function addToDBFromLists(DB, l1, l2, l1cond, l2cond)
{
	for (let i = 0; i < l1.length; i++)
	{
        if (l1cond(l1[i]) && l2cond(l2[i]))
            DB.execute("INSERT IGNORE INTO classes VALUES (?, ?)", [l1[i], l2[i]]);
	}
}

async function parseClasses(DB, classes)
{
	await DB.query_raw("DELETE FROM classes");
        return await parseClassData(classes, DB);
}

exports.classes = parseClasses;