137 lines
8.3 KiB
JavaScript
137 lines
8.3 KiB
JavaScript
const mariadb = require('mariadb');
|
|
|
|
const gameInfo = async (req, res) => {
|
|
|
|
// Create a connection pool
|
|
const pool = mariadb.createPool({
|
|
host: process.env.MARIA_HOST,
|
|
user: process.env.MARIA_USER,
|
|
password: process.env.MARIA_PASS,
|
|
database: process.env.MARIA_DBNM,
|
|
connectionLimit: 5,
|
|
});
|
|
|
|
const { schoolId, teacherId } = req.query;
|
|
|
|
if (!schoolId && !teacherId) {
|
|
return res.status(400).send({ error: 'Either schoolId or teacherId is required in the query parameters.' });
|
|
}
|
|
|
|
let connection;
|
|
try {
|
|
// Establish a connection to the database
|
|
connection = await pool.getConnection();
|
|
|
|
let queryCondition;
|
|
let queryValue;
|
|
|
|
// Determine the query condition based on the parameters provided
|
|
if (schoolId) {
|
|
queryCondition = 'schoolId = ?';
|
|
queryValue = schoolId;
|
|
} else {
|
|
queryCondition = 'teacherId = ?';
|
|
queryValue = teacherId;
|
|
}
|
|
|
|
// Query both game1 and game2 tables
|
|
const query1 = `SELECT * FROM game_drawing WHERE ${queryCondition}`;
|
|
const query2 = `SELECT * FROM game_drawing_v2 WHERE ${queryCondition}`;
|
|
const query3 = `SELECT * FROM game_drawing_v3 WHERE ${queryCondition}`;
|
|
const query4 = `SELECT * FROM drawing_phonics WHERE ${queryCondition}`;
|
|
const query5 = `SELECT * FROM game_tick_variant1 WHERE ${queryCondition}`;
|
|
const query6 = `SELECT * FROM game_tick_variant2 WHERE ${queryCondition}`;
|
|
const query7 = `SELECT * FROM game_tick_varient3 WHERE ${queryCondition}`;
|
|
const query8 = `SELECT * FROM game_cross_varient1 WHERE ${queryCondition}`;
|
|
const query9 = `SELECT * FROM game_cross_varient2 WHERE ${queryCondition}`;
|
|
const query10 = `SELECT * FROM game_cross_varient3 WHERE ${queryCondition}`;
|
|
const query11 = `SELECT * FROM game_drag WHERE ${queryCondition}`;
|
|
const query12 = `SELECT * FROM game_drag_v2 WHERE ${queryCondition}`;
|
|
const query13 = `SELECT * FROM game_drag_v4 WHERE ${queryCondition}`;
|
|
const query14 = `SELECT * FROM game_tick_v3_phonics WHERE ${queryCondition}`;
|
|
const query15 = `SELECT * FROM tick_phonics_option_6 WHERE ${queryCondition}`;
|
|
const query16 = `SELECT * FROM tick_phonics_option_9 WHERE ${queryCondition}`;
|
|
const query17 = `SELECT * FROM drag_drop_phonics WHERE ${queryCondition}`;
|
|
const query18 = `SELECT * FROM drag_phonics WHERE ${queryCondition}`;
|
|
const query19 = `SELECT * FROM cross_phonics_option_9 WHERE ${queryCondition}`;
|
|
|
|
const [game_drawing, game_drawing_v2, game_drawing_v3, drawing_phonics, game_tick_variant1, game_tick_variant2, game_tick_varient3, game_cross_varient1, game_cross_varient2, game_cross_varient3, game_drag, game_drag_v2, game_drag_v4, game_tick_v3_phonics, tick_phonics_option_6, tick_phonics_option_9, drag_drop_phonics, drag_phonics, cross_phonics_option_9 ] = await Promise.all([
|
|
connection.query(query1, [queryValue]),
|
|
connection.query(query2, [queryValue]),
|
|
connection.query(query3, [queryValue]),
|
|
connection.query(query4, [queryValue]),
|
|
connection.query(query5, [queryValue]),
|
|
connection.query(query6, [queryValue]),
|
|
connection.query(query7, [queryValue]),
|
|
connection.query(query8, [queryValue]),
|
|
connection.query(query9, [queryValue]),
|
|
connection.query(query10, [queryValue]),
|
|
connection.query(query11, [queryValue]),
|
|
connection.query(query12, [queryValue]),
|
|
connection.query(query13, [queryValue]),
|
|
connection.query(query14, [queryValue]),
|
|
connection.query(query15, [queryValue]),
|
|
connection.query(query16, [queryValue]),
|
|
connection.query(query17, [queryValue]),
|
|
connection.query(query18, [queryValue]),
|
|
connection.query(query19, [queryValue])
|
|
]);
|
|
|
|
// const domain = 'https://domain.com/gamelink/?id=';
|
|
const domain = process.env.GAME_DOMAIN;
|
|
|
|
const formattedGame1 = game_drawing.map(game => ({ ...game, game_id: `game_drawing-${game.id}`, game_link: `${domain}/drawing/?id=${game.id}`, }));
|
|
const formattedGame2 = game_drawing_v2.map(({ status, ...game }) => ({ ...game, game_id: `game_drawing_v2-${game.id}`, game_link: `${domain}/drawing/v2/?id=${game.id}`, }));
|
|
const formattedGame3 = game_drawing_v3.map(({ status, ...game }) => ({ ...game, game_id: `game_drawing_v3-${game.id}`, game_link: `${domain}/drawing/v3/?id=${game.id}`, }));
|
|
const formattedGame4 = drawing_phonics.map(({ status, ...game }) => ({ ...game, game_id: `drawing_phonics-${game.id}`, game_link: `${domain}/drawing/drawing_phonics/?id=${game.id}`, }));
|
|
const formattedGame5 = game_tick_variant1.map(({ status, ...game }) => ({ ...game, game_id: `game_tick_variant1-${game.id}`, game_link: `${domain}/tick/v1/?id=${game.id}`, }));
|
|
const formattedGame6 = game_tick_variant2.map(({ status, ...game }) => ({ ...game, game_id: `game_tick_variant2-${game.id}`, game_link: `${domain}/tick/v2/?id=${game.id}`, }));
|
|
const formattedGame7 = game_tick_varient3.map(({ status, ...game }) => ({ ...game, game_id: `game_tick_varient3-${game.id}`, game_link: `${domain}/tick/v3/?id=${game.id}`, }));
|
|
const formattedGame8 = game_cross_varient1.map(({ status, ...game }) => ({ ...game, game_id: `game_cross_varient1-${game.id}`, game_link: `${domain}/cross/v1/?id=${game.id}`, }));
|
|
const formattedGame9 = game_cross_varient2.map(({ status, ...game }) => ({ ...game, game_id: `game_cross_varient2-${game.id}`, game_link: `${domain}/cross/v2/?id=${game.id}`, }));
|
|
const formattedGame10 = game_cross_varient3.map(({ status, ...game }) => ({ ...game, game_id: `game_cross_varient3-${game.id}`, game_link: `${domain}/cross/v3/?id=${game.id}`, }));
|
|
const formattedGame11 = game_drag.map(({ status, ...game }) => ({ ...game, game_id: `game_drag-${game.id}`, game_link: `${domain}/drag/?id=${game.id}`, }));
|
|
const formattedGame12 = game_drag_v2.map(({ status, ...game }) => ({ ...game, game_id: `game_drag_v2-${game.id}`, game_link: `${domain}/drag/v2/?id=${game.id}`, }));
|
|
const formattedGame13 = game_drag_v4.map(({ status, ...game }) => ({ ...game, game_id: `game_drag_v4-${game.id}`, game_link: `${domain}/drag/v4/?id=${game.id}`, }));
|
|
const formattedGame14 = game_tick_v3_phonics.map(({ status, ...game }) => ({ ...game, game_id: `game_tick_v3_phonics-${game.id}`, game_link: `${domain}/tick/tick_phonics_v1/?id=${game.id}`, }));
|
|
const formattedGame15 = tick_phonics_option_6.map(({ status, ...game }) => ({ ...game, game_id: `tick_phonics_option_6-${game.id}`, game_link: `${domain}/tick/tick_phonics_v2/?id=${game.id}`, }));
|
|
const formattedGame16 = tick_phonics_option_9.map(({ status, ...game }) => ({ ...game, game_id: `tick_phonics_option_9-${game.id}`, game_link: `${domain}/tick/tick_phonics_v3/?id=${game.id}`, }));
|
|
const formattedGame17 = drag_drop_phonics.map(({ status, ...game }) => ({ ...game, game_id: `drag_drop_phonics-${game.id}`, game_link: `${domain}/drag/dragdrop_phonics/?id=${game.id}`, }));
|
|
const formattedGame18 = drag_phonics.map(({ status, ...game }) => ({ ...game, game_id: `drag_phonics-${game.id}`, game_link: `${domain}/drag/match_phonics/?id=${game.id}`, }));
|
|
const formattedGame19 = cross_phonics_option_9.map(({ status, ...game }) => ({ ...game, game_id: `cross_phonics_option_9-${game.id}`, game_link: `${domain}/cross/cross_phonics_v2/?id=${game.id}`, }));
|
|
|
|
|
|
const combinedResults = {
|
|
game_drawing: formattedGame1,
|
|
game_drawing_v2: formattedGame2,
|
|
game_drawing_v3: formattedGame3,
|
|
drawing_phonics: formattedGame4,
|
|
game_tick_variant1: formattedGame5,
|
|
game_tick_variant2: formattedGame6,
|
|
game_tick_varient3: formattedGame7,
|
|
game_cross_varient1: formattedGame8,
|
|
game_cross_varient2: formattedGame9,
|
|
game_cross_varient3: formattedGame10,
|
|
game_drag: formattedGame11,
|
|
game_drag_v2: formattedGame12,
|
|
game_drag_v4: formattedGame13,
|
|
game_tick_v3_phonics: formattedGame14,
|
|
tick_phonics_option_6: formattedGame15,
|
|
tick_phonics_option_9: formattedGame16,
|
|
drag_drop_phonics: formattedGame17,
|
|
drag_phonics: formattedGame18,
|
|
cross_phonics_option_9: formattedGame19
|
|
};
|
|
|
|
res.status(200).send(combinedResults);
|
|
} catch (error) {
|
|
console.error('Error querying game tables:', error);
|
|
res.status(500).send({ error: 'An error occurred while fetching game data.' });
|
|
} finally {
|
|
// Release the connection back to the pool
|
|
if (connection) connection.release();
|
|
}
|
|
};
|
|
|
|
module.exports = gameInfo;
|