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

Added Test constructor

This commit is contained in:
2022-02-25 13:16:34 +00:00
parent 48176a28fe
commit f16cab9f8b

View File

@@ -1,5 +1,10 @@
'use strict'; 'use strict';
// Import user defined modules
const DatabaseConnectionPool = require('./DatabaseConnectionPool');
const TestTemplate = require('./TestTemplate');
/** /**
* A class that represents the date of a test * A class that represents the date of a test
*/ */
@@ -16,13 +21,75 @@ class TestDate extends Date {
} }
class Test { class Test {
testId; /**
testTemplateId; * The id of the test
* @type {string}
*/
id;
/**
* The id of the test template it is based on
* @type {string}
*/
templateId;
/**
* The test template object that it is based on
* @type {TestTemplate}
*/
template;
/**
* The id of the class it is assigned to
* @type {string}
*/
classId; classId;
testDate;
constructor () { /**
* The test date in epoch seconds
* @type {number}
*/
epochDate;
/**
* The test date
* @type {TestDate}
*/
date;
/**
* @param {string} testId - The id of the test to fetch
*/
constructor(testId) {
const sql = `
select
testId as id,
testTemplateId as templateId,
classId,
UNIX_TIMESTAMP(testDate) as epochDate
from
test
where
testId = ?;
`;
return (async () => {
const conn = await new DatabaseConnectionPool();
const record = await conn.runQuery(sql, [
testId,
]);
if (!record.length)
throw new Error('No test found');
for (const [ k, v ] of Object.entries(record[0]))
this[k] = v;
this.date = new TestDate(this.epochDate * 1000);
this.template = await new TestTemplate(this.templateId);
return this;
})();
} }
get class() { get class() {