const mysql = require('mysql'); const con = mysql.createConnection({ host: "localhost", user: "realmsdivided", password: "realmsdivided", database: "realms_divided" }); function connect(){ con.connect(function(err) { if (err) { console.log(err); } else { console.log('DB Connected'); } }); } function disconnect(){ con.end(); } // My DB stuffs function dbGetDecks(deckIds = false){ const dPromise = new Promise((resolve, reject) => { let cards = []; let sql = `SELECT deckId ,playerId ,deckName FROM deck `; // TODO: Jank, need to unjank it if(deckIds){ for(let i = 0; i < deckIds.length; i++){ if(i == 0){ sql += ' WHERE '; } else{ sql += ' OR '; } sql += '(deckId = '+deckIds[i][1]+' AND playerId = '+deckIds[i][0]+')'; } } con.query(sql, function (err, result, fields) { if (err) { throw err; reject(new Error(err)); } resolve(result); }); }); return dPromise; } function dbGetDeckList(deckIds = false){ const dPromise = new Promise((resolve, reject) => { let cards = []; let sql = `SELECT deckId ,playerId ,cardId ,cardCount FROM deck_cards `; // TODO: Jank, need to unjank it if(deckIds){ for(let i = 0; i < deckIds.length; i++){ if(i == 0){ sql += ' WHERE '; } else{ sql += ' OR '; } sql += '(deckId = '+deckIds[i][1]+' AND playerId = '+deckIds[i][0]+')'; } } con.query(sql, function (err, result, fields) { if (err) { throw err; reject(new Error(err)); } resolve(result); }); }); return dPromise; } function dbGetCards(cardIds = false){ // Start with basic stuff in card table const dPromise = new Promise((resolve, reject) => { let sql = `SELECT id ,cardName ,cardCost ,cardType ,cardAttack ,cardRarity FROM card `; if(cardIds){ sql += 'WHERE card.id IN ('+cardIds+')'; } con.query(sql, function (err, result, fields) { if (err) { throw err; reject(new Error(err)); } resolve(result); }); }); return dPromise; } function dbGetCardClasses(cardIds = false){ // Get the classes assoc. on each card const dPromise = new Promise((resolve, reject) => { let sql = `SELECT cardId ,classId FROM card_class `; if(cardIds){ sql += 'WHERE cardId IN ('+cardIds+')'; } con.query(sql, function (err, result, fields) { if (err) { throw err; reject(new Error(err)); } resolve(result); }); }); return dPromise; } function dbGetCardColourRequirement(cardIds = false){ // Get the classes assoc. on each card const dPromise = new Promise((resolve, reject) => { let sql = `SELECT cardId ,colourId ,cost FROM card_colour_requirement `; if(cardIds){ sql += 'WHERE cardId IN ('+cardIds+')'; } con.query(sql, function (err, result, fields) { if (err) { throw err; reject(new Error(err)); } resolve(result); }); }); return dPromise; } function dbGetCardManaColour(cardIds = false){ // Get the classes assoc. on each card const cPromise = new Promise((resolve, reject) => { let sql = `SELECT cardId ,colourId FROM card_mana_colour `; if(cardIds){ sql += 'WHERE cardId IN ('+cardIds+')'; } con.query(sql, function (err, result, fields) { if (err) { throw err; reject(new Error(err)); } resolve(result); }); }); return cPromise; } // Effect stuff function dbGetEffect(cardIds = false){ const ePromise = new Promise((resolve, reject) => { let sql = `SELECT cardId ,effectId ,description FROM card_effect INNER JOIN effect ON effect.id = card_effect.effectId `; if(cardIds){ sql += 'WHERE cardId IN ('+cardIds+')'; } con.query(sql, function (err, result, fields) { if (err) { throw err; reject(new Error(err)); } resolve(result); }); }); return ePromise; } function dbGetEffectStep(effectIds = false){ const ePromise = new Promise((resolve, reject) => { let sql = `SELECT effectId, effect_step.id AS stepId, stepOrder, basicEffectId, amount, colourId, typeId, classId, passiveId, itemFromStep FROM effect_step LEFT JOIN -- May not be a target? effect_step_target ON effect_step_target.effectStep = effect_step.id `; if(effectIds){ sql += 'WHERE effectId IN ('+effectIds+')'; } con.query(sql, function (err, result, fields) { if (err) { throw err; reject(new Error(err)); } resolve(result); }); }); return ePromise; } // Effect Trigger stuff function dbGetEffectTrigger(effectIds = false){ const ePromise = new Promise((resolve, reject) => { let sql = `SELECT effect_trigger.id AS triggerId, cardId, effectId, triggerTypeId, amount, colourId, typeId, classId, passiveId FROM effect_trigger INNER JOIN card_effect ON card_effect.effectId = effect_trigger.cardEffectId INNER JOIN trigger_type ON trigger_type.id = effect_trigger.triggerTypeId LEFT JOIN -- May not be a target effect_trigger_target ON effect_trigger_target.effectTriggerId = effect_trigger.triggerTypeId `; if(effectIds){ sql += 'WHERE effectId IN ('+effectIds+')'; } con.query(sql, function (err, result, fields) { if (err) { throw err; reject(new Error(err)); } resolve(result); }); }); return ePromise; } // Passive stuff function dbGetPassive(cardIds = false){ const pPromise = new Promise((resolve, reject) => { let sql = `SELECT cardId ,passiveId FROM card_passive `; if(cardIds){ sql += 'WHERE card.id IN ('+cardIds+')'; } con.query(sql, function (err, result, fields) { if (err) { throw err; reject(new Error(err)); } resolve(result); }); }); return pPromise; } module.exports = { connect, disconnect // Testing, and trailing , dbGetDecks , dbGetDeckList , dbGetCards , dbGetCardClasses , dbGetCardColourRequirement , dbGetCardManaColour , dbGetEffect , dbGetEffectStep , dbGetEffectTrigger , dbGetPassive };