101 lines
3.4 KiB
JavaScript
101 lines
3.4 KiB
JavaScript
const connection = require('./connection');
|
|
|
|
async function getAllGames(parameters = {}) {
|
|
let selectSql = `SELECT
|
|
m.id AS appID,
|
|
m.game_title AS title,
|
|
d.name AS developer,
|
|
p.name AS publisher,
|
|
m.release_date AS releaseDate,
|
|
m.short_description AS summary,
|
|
m.win_supported AS win,
|
|
m.mac_supported AS mac,
|
|
m.linux_supported AS linux
|
|
FROM games_master_table m
|
|
INNER JOIN developers d ON m.developer_id = d.id
|
|
INNER JOIN publishers p ON m.publisher_id = p.id`,
|
|
whereStatements = [],
|
|
orderByStatements = [],
|
|
queryParameters = [];
|
|
|
|
if (typeof parameters.win !== 'undefined' && parseInt(parameters.win) === 1) {
|
|
whereStatements.push("m.win_supported = 1");
|
|
}
|
|
|
|
if (typeof parameters.mac !== 'undefined' && parseInt(parameters.mac) === 1) {
|
|
whereStatements.push("m.mac_supported = 1");
|
|
}
|
|
|
|
if (typeof parameters.linux !== 'undefined' && parseInt(parameters.linux) === 1) {
|
|
whereStatements.push("m.linux_supported = 1");
|
|
}
|
|
|
|
if (typeof parameters.appID !== 'undefined' && parameters.appID.length > 0) {
|
|
const appID = parameters.appID;
|
|
whereStatements.push("m.id LIKE ?");
|
|
queryParameters.push('%' + appID + '%');
|
|
}
|
|
|
|
if (typeof parameters.title !== 'undefined' && parameters.title.length > 0) {
|
|
const title = parameters.title;
|
|
whereStatements.push("m.game_title LIKE ?");
|
|
queryParameters.push('%' + title + '%');
|
|
}
|
|
|
|
if (typeof parameters.developer !== 'undefined' && parameters.developer.length > 0) {
|
|
const developer = parameters.developer;
|
|
whereStatements.push("d.name LIKE ?");
|
|
queryParameters.push('%' + developer + '%');
|
|
}
|
|
|
|
if (typeof parameters.publisher !== 'undefined' && parameters.publisher.length > 0) {
|
|
const publisher = parameters.publisher;
|
|
whereStatements.push("p.name LIKE ?");
|
|
queryParameters.push('%' + publisher + '%');
|
|
}
|
|
|
|
if (typeof parameters.releaseDate !== 'undefined' && parameters.releaseDate.length > 0) {
|
|
const releaseDate = parameters.releaseDate;
|
|
whereStatements.push("m.release_date LIKE ?");
|
|
queryParameters.push('%' + releaseDate + '%');
|
|
}
|
|
|
|
if (typeof parameters.orderBy !== 'undefined') {
|
|
const sort = parameters.orderBy;
|
|
if (sort === 'ASC') {
|
|
orderByStatements.push('m.id ASC');
|
|
} else if (sort === 'DESC') {
|
|
orderByStatements.push('m.id DESC')
|
|
}
|
|
}
|
|
|
|
//Dynamically add WHERE expressions to SELECT statements if needed
|
|
if (whereStatements.length > 0) {
|
|
selectSql = selectSql + ' WHERE ' + whereStatements.join(' AND ');
|
|
}
|
|
|
|
//Dynamically add ORDER BY expressions to SELECT statements if needed
|
|
if (orderByStatements.length > 0) {
|
|
selectSql = selectSql + ' ORDER BY ' + orderByStatements.join(', ');
|
|
}
|
|
|
|
//Dynamically add ORDER BY expressions to SELECT statements if needed
|
|
if (typeof parameters.limitNumber !== 'undefined' && parameters.limitNumber > 0 && parameters.limitNumber < 6) {
|
|
selectSql = selectSql + ' LIMIT ' + parameters.limitNumber;
|
|
}
|
|
|
|
return await connection.query(selectSql, queryParameters);
|
|
}
|
|
|
|
async function addNewGame() {
|
|
let insertSql = `INSERT INTO games_master_table`;
|
|
let queryParameters = [];
|
|
|
|
return await connection.query(insertSql, queryParameters);
|
|
}
|
|
|
|
module.exports = {
|
|
getAllGames,
|
|
addNewGame
|
|
}
|