You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
cardGame/database.js

220 lines
4.4 KiB
JavaScript

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(){
const dPromise = new Promise((resolve, reject) => {
let cards = [];
let sql = `SELECT
deckId
,playerId
,deckName
FROM deck
LIMIT 10
`; // TODO: Remove limit when happy/this accepts params
con.query(sql, function (err, result, fields) {
if (err) { throw err; reject(new Error(err)); }
resolve(result);
});
});
return dPromise;
}
function dbGetDeckList(){
const dPromise = new Promise((resolve, reject) => {
let cards = [];
let sql = `SELECT
deckId
,playerId
,cardId
,cardCount
FROM deck_cards
`;
con.query(sql, function (err, result, fields) {
if (err) { throw err; reject(new Error(err)); }
resolve(result);
});
});
return dPromise;
}
function dbGetCards(){
// Start with basic stuff in card table
const dPromise = new Promise((resolve, reject) => {
let sql = `SELECT
id
,cardName
,cardCost
,cardType
,cardAttack
,cardRarity
FROM card
`;
con.query(sql, function (err, result, fields) {
if (err) { throw err; reject(new Error(err)); }
resolve(result);
});
});
return dPromise;
}
function dbGetCardClasses(){
// Get the classes assoc. on each card
const dPromise = new Promise((resolve, reject) => {
let sql = `SELECT
cardId
,classId
FROM card_class
`;
con.query(sql, function (err, result, fields) {
if (err) { throw err; reject(new Error(err)); }
resolve(result);
});
});
return dPromise;
}
function dbGetCardColourRequirement(){
// Get the classes assoc. on each card
const dPromise = new Promise((resolve, reject) => {
let sql = `SELECT
cardId
,colourId
,cost
FROM card_colour_requirement
`;
con.query(sql, function (err, result, fields) {
if (err) { throw err; reject(new Error(err)); }
resolve(result);
});
});
return dPromise;
}
function dbGetCardManaColour(){
// Get the classes assoc. on each card
const cPromise = new Promise((resolve, reject) => {
let sql = `SELECT
cardId
,colourId
FROM card_mana_colour
`;
con.query(sql, function (err, result, fields) {
if (err) { throw err; reject(new Error(err)); }
resolve(result);
});
});
return cPromise;
}
// Effect stuff
function dbGetEffect(){
const ePromise = new Promise((resolve, reject) => {
let sql = `SELECT
cardId
,effectId
,description
FROM card_effect
INNER JOIN effect
ON effect.id = card_effect.effectId
`;
con.query(sql, function (err, result, fields) {
if (err) { throw err; reject(new Error(err)); }
resolve(result);
});
});
return ePromise;
}
function dbGetEffectStep(){
const ePromise = new Promise((resolve, reject) => {
let sql = `SELECT
effectId,
effectStep,
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
`;
con.query(sql, function (err, result, fields) {
if (err) { throw err; reject(new Error(err)); }
resolve(result);
});
});
return ePromise;
}
// Effect Trigger stuff
function dbGetEffectTrigger(){
const ePromise = new Promise((resolve, reject) => {
let sql = `SELECT
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
`;
con.query(sql, function (err, result, fields) {
if (err) { throw err; reject(new Error(err)); }
resolve(result);
});
});
return ePromise;
}
module.exports = {
connect, disconnect
// Testing, and trailing
, dbGetDecks
, dbGetDeckList
, dbGetCards
, dbGetCardClasses
, dbGetCardColourRequirement
, dbGetCardManaColour
, dbGetEffect
, dbGetEffectStep
, dbGetEffectTrigger
};