1
0
mirror of https://github.com/matt-fidd/stratos.git synced 2026-01-01 22:19:26 +00:00

Added Class.getTests()

This commit is contained in:
2022-02-28 11:49:02 +00:00
parent 7474d3d9b7
commit b214c7858a

View File

@@ -1,6 +1,7 @@
'use strict'; 'use strict';
const DatabaseConnectionPool = require('./DatabaseConnectionPool'); const DatabaseConnectionPool = require('./DatabaseConnectionPool');
const Test = require('./Test');
class Class { class Class {
/** /**
@@ -109,8 +110,45 @@ class Class {
return Promise.all(teacherPromises); return Promise.all(teacherPromises);
} }
get tests() { async getTests({ order='desc', range='all' } = {}) {
const validOrder = [ 'asc', 'desc' ];
const validRange = [ 'all', 'before', 'after' ];
if (!validOrder.includes(order))
throw new Error('Invalid order');
if (!validRange.includes(range))
throw new Error('Invalid range');
let sql = `
select
t.testId as testId
from
class c
join test t using(classId)
where
c.classId = ?
`;
switch (range) {
case 'before':
sql += 'and t.testDate <= curdate()';
break;
case 'after':
sql += 'and t.testDate > curdate()';
break;
}
sql += `order by t.testDate ${order};`;
const conn = await new DatabaseConnectionPool();
const tests = await conn.runQuery(sql, [ this.id ]);
const testObjects = tests.map(test => {
return new Test(test.testId);
});
return await Promise.all(testObjects);
} }
get students() { get students() {