migrate rote to new folder

This commit is contained in:
2019-09-26 18:03:16 +02:00
parent 249b94e2ed
commit 743d0bd64d
14 changed files with 561 additions and 472 deletions

0
.gitignore vendored Executable file → Normal file
View File

0
.npmrc Executable file → Normal file
View File

0
README.md Executable file → Normal file
View File

0
auth.js Executable file → Normal file
View File

24
db.js Executable file → Normal file
View File

@@ -4,20 +4,20 @@ const MySQL = require('mysql');
exports.db = () => {
// create new dbConnection
// ONLINE
const dbConnection = MySQL.createConnection({
host: 'localhost',
user: 'karateturniereKT',
password: 'b6aU1$p5',
database: 'karateturniere_kt'
});
// const dbConnection = MySQL.createConnection({
// host: 'localhost',
// user: 'karateturniereKT',
// password: 'b6aU1$p5',
// database: 'karateturniere_kt'
// });
// create new dbConnection
// LOCAL
// const dbConnection = MySQL.createConnection({
// host: 'localhost',
// user: 'root',
// password: '',
// database: 'karateturniere'
// });
const dbConnection = MySQL.createConnection({
host: 'localhost',
user: 'root',
password: '',
database: 'karateturniere'
});
return dbConnection;
};

0
package-lock.json generated Executable file → Normal file
View File

0
package.json Executable file → Normal file
View File

516
routes.js Executable file → Normal file
View File

@@ -6,405 +6,7 @@ const jwt = require('jsonwebtoken');
exports.configureRoutes = (server) => {
// server.route accepts an object or an array
return server.route([
{
method: "GET", path: "/", config: {auth: false},
handler: function (request, h) {
return {text: 'Token not required'};
}
},
{
method: 'GET', path: '/restricted', options: {auth: 'admin'},
handler: function (request, h) {
return h
.response({text: 'You used a Token!'})
.type('text/html')
.header("Authorization", request.headers.authorization)
.code(201);
}
},
{
method: 'GET', path: '/token', options: {auth: 'admin',},
handler: async (request, h) => {
const token = request.query.token;
console.log(token);
const decoded = jwt.verify(token, 'NeverShareYourSecret');
console.log(decoded); // bar
return h
.response({text: 'You used a Token!'})
.type('text/html')
.header("Authorization", request.headers.authorization)
.code(201);
},
},
{
// {"login":{"email": "mario@wattsche.de", "password": "mmario"}}
method: 'POST',
path: '/authentications',
handler: async (request,h) => {
const {email, password} = request.payload.login;
const pwOk = await login(email, password);
console.log(pwOk);
if (pwOk === "wrong credentials"){
return h
.response(pwOk)
.type('text/html')
.code(403);
} else {
return h
.response(pwOk)
.type('text/html')
.header("Authorization", request.headers.authorization)
.code(200);
}
},
options: {
// TODO CORS ENTFERNE
// cors: {
// origin: ['*'],
// headers: ["Access-Control-Allow-Headers", "Access-Control-Allow-Origin","Accept", "Authorization", "Content-Type", "If-None-Match", "Accept-language"],
// credentials: true
// },
cors: {
origin: ['*'],
additionalHeaders: ['cache-control', 'x-requested-with']
},
auth: false
}
}
]),
// Alle Teilnehmer eines $Turniers
// TODO mit neuer struktur anpassen
server.route({
method: 'GET',
path: '/tournament/{tid}/participants',
handler: async (request, h) => {
return new Promise((resolve, reject) => {
const tid = request.params.tid;
db().query(`SELECT turniergruppen.id AS gid, turniergruppen.turnier_id, encounters.begegnung, encounters.aka, encounters.shiro, teilnehmer.id, teilnehmer.vorname, teilnehmer.name, teilnehmer.verein
FROM turniergruppen, encounters, teilnehmer
WHERE turniergruppen.turnier_id = ${tid}
AND turniergruppen.id = encounters.gruppen_id
AND (encounters.aka = teilnehmer.id OR encounters.shiro = teilnehmer.id)`, function (error, results, fields) {
if (error) {
throw error;
} else {
return resolve(results);
}
});
});
},
options: {
validate: {
params: {
tid: Joi.number().integer().min(0)
}
},
// TODO CORS ENTFERNE
cors: {
origin: ['*'],
additionalHeaders: ['cache-control', 'x-requested-with']
}
}
}),
// Alle Gruppen des $Turniers
server.route({
method: 'GET',
path: '/group/{tid}',
handler: function (request, h) {
return new Promise((resolve, reject) => {
const tid = request.params.tid;
db().query('SELECT id, gid, turnier_id, geschlecht, gurtVon, gurtBis, disziplin, altervon, alterbis, pool, finalteilnehmer FROM turniergruppen WHERE turnier_id = "' + tid + '" ORDER BY gid', function (error, results, fields) {
if (error) throw error;
// console.log(results);
return resolve(results);
});
});
},
options: {
validate: {
params: {
tid: Joi.number().integer().min(0)
}
},
// TODO CORS ENTFERNE
cors: {
origin: ['*'],
additionalHeaders: ['cache-control', 'x-requested-with']
}
}
}),
// Lege Finalgruppen an
server.route({
method: 'GET',
path: '/final/{tid}/create',
handler: function (request, h) {
return new Promise((resolve, reject) => {
const tid = request.params.tid;
db().query('SELECT id, gid, turnier_id, geschlecht, gurtVon, gurtBis, disziplin, altervon, alterbis, pool, finalteilnehmer FROM turniergruppen WHERE turnier_id = "' + tid + '" ORDER BY gid',
function (error, results, fields) {
if (error) throw error;
let highestGid = results[0].gid;
let myquery = "";
// Berechne höchste GID
for (let i=0; i < results.length; i++) {
if (highestGid < results[i].gid) {
highestGid = results[i].gid;
}
}
//
// // Baue myquery für alle Gruppen, die keinen FINAL pool haben
// for (let j=1; j <= highestGid; j++) {
// for (let i = 0; i < results.length; i++) {
// if ( j === results[i].gid ) {
// myquery += "INSERT INTO turniergruppen (gid, turnier_id, geschlecht, gurtVon, gurtBis, disziplin, altervon, alterbis, pool)" +
// "VALUES (" + results[i].gid + "," + results[i].turnier_id + "," + results[i].geschlecht + "," + results[i].gurtVon + "," + results[i].gurtBis + "," + results[i].disziplin + "," + results[i].altervon + "," + results[i].alterbis +", 'FINAL');\n";
//
// }
// }
// }
// let gidWithFinal = [];
// // Groups with final
// for (let i=1; i <= highestGid; i++) {
// if ( results[i].pool = "FINAL" ) {
// gidWithFinal.push(results[i].gid)
// }
// }
//
// for (let i=1; i <= highestGid; i++) {
// if ( gidWithFinal[i] != i ) {
// // myquerry= ... ;
// }
// }
// Durchlaufe alle Gruppen und Speichere im Object
// {gid1:{ pre:[111,123,132]},
// final: 322,
// disziplin: 'Kata-einzel'
// }
// let lastGid = 1
// console.log(results);
let groupIDs = {};
for (let i=1; i < results.length; i++ ) {
if(!groupIDs['gid' + results[i].gid]){
groupIDs['gid' + results[i].gid] = {
"pre": [],
"final": null,
"disziplin": ''
};
}
if (results[i].pool === "FINAL") {
// groupIDs = {gid1:{
// pre:[111,123,132]},
// final: 322,
// disziplin: 'Kata-einzel'
// };
groupIDs['gid' + results[i].gid].final = results[i].id;
groupIDs['gid' + results[i].gid].disziplin = results[i].disziplin;
} else {
// groupIDs = {gid1:[111,123,132]}
groupIDs['gid' + results[i].gid].pre.push(results[i].id);
}
}
console.log('groupIDs');
console.log(groupIDs);
//TODO Alle FinalGruppen schreiben
//TODO
switch (pools) {
case 1:
// aus encounter begegnung 2+3
[break;]
case 2:
// aus encounter begegnung 1
[break;]
...
case 4:
// aus encounter begegnung 1 Sieger
[break;]
default:
// Anweisungen werden ausgeführt,
// falls keine der case-Klauseln mit expression übereinstimmt
[break;]
}
return resolve(results);
});
const grouplist = resolve;
console.log('grouplist');
console.log(grouplist);
});
},
options: {
validate: {
params: {
tid: Joi.number().integer().min(0)
}
},
// TODO CORS ENTFERNE
cors: {
origin: ['*'],
additionalHeaders: ['cache-control', 'x-requested-with']
}
}
}),
// Alle Teilnehmer der Gruppe
server.route({
method: 'GET',
path: '/group/{gid}/participants',
handler: function (request, h) {
return new Promise((resolve, reject) => {
const gid = request.params.gid;
db().query("SELECT teilnehmer.id, teilnehmer.name, teilnehmer.vorname, teilnehmer.verein FROM teilnehmer_turniergruppe, teilnehmer WHERE turniergruppe_id = " + gid + " AND teilnehmer_id = teilnehmer.id", function (error, results, fields) {
// db().query('SELECT id, gid, turnier_id, geschlecht, gurtVon, gurtBis, disziplin, altervon, alterbis, pool, finalteilnehmer FROM turniergruppen WHERE turnier_id = "' + tid + '" ORDER BY gid', function (error, results, fields) {
if (error) throw error;
// console.log(results);
return resolve(results);
});
});
},
options: {
validate: {
params: {
gid: Joi.number().integer().min(0)
}
},
// TODO CORS ENTFERNE
cors: {
origin: ['*'],
additionalHeaders: ['cache-control', 'x-requested-with']
}
}
}),
// Alle Teams der Gruppe
server.route({
method: 'GET',
path: '/group/{gid}/teams',
handler: function (request, h) {
return new Promise((resolve, reject) => {
const gid = request.params.gid;
db().query("SELECT teams.id, teams.teamName FROM team_turniergruppe, teams WHERE turniergruppe_id = " + gid + " AND team_id = teams.id", function (error, results, fields) {
if (error) throw error;
// console.log(results);
return resolve(results);
});
});
},
options: {
validate: {
params: {
gid: Joi.number().integer().min(0)
}
},
// TODO CORS ENTFERNE
cors: {
origin: ['*'],
additionalHeaders: ['cache-control', 'x-requested-with']
}
}
}),
// Alle Teilnehmer_ids der $Gruppe - Daten kommen aus der Auslosung
server.route({
method: 'GET',
path: '/group/encounters/{gid}',
handler: function (request, h) {
return new Promise((resolve, reject) => {
const gid = request.params.gid;
// db().query('SELECT begegnungen.id FROM wettkampfbaeume, korunden, begegnungen WHERE wettkampfbaeume.gruppen_id = "' + gid + '" AND wettkampfbaeume.id = korunden.wettkampfbaum_id AND korunden.id = begegnungen.runden_id', function (error, results, fields) {
// db().query('SELECT * FROM wettkampfbaeume, korunden, begegnungen WHERE wettkampfbaeume.gruppen_id = "' + gid + '" AND wettkampfbaeume.id = korunden.wettkampfbaum_id AND korunden.id = begegnungen.runden_id', function (error, results, fields) {
// db().query('SELECT * FROM encounters WHERE gruppen_id = ' + gid, function (error, results, fields) {
db().query('SELECT * FROM encounters WHERE gruppen_id = ' + gid + ' ORDER BY begegnung DESC', function (error, results, fields) {
if (error) throw error;
// console.log(results);
return resolve(results);
});
});
},
options: {
validate: {
params: {
gid: Joi.number().integer().min(0)
}
},
// TODO CORS ENTFERNE
cors: {
origin: ['*'],
additionalHeaders: ['cache-control', 'x-requested-with']
}
}
}),
server.route({
method: 'GET',
path: '/participant/{id}',
handler: function (request, h) {
return new Promise((resolve, reject) => {
const id = request.params.id;
db().query('SELECT teilnehmer.id, teilnehmer.vorname, teilnehmer.name, teilnehmer.verein FROM starter, teilnehmer, begegnungen WHERE begegnungen.id = "' + id + '" AND begegnungen.id = starter.begegnungs_id AND starter.teilnehmer_id = teilnehmer.id', function (error, results, fields) {
if (error) throw error;
console.log(results);
return resolve(results);
});
});
},
options: {
validate: {
params: {
id: Joi.number().integer().min(0)
}
},
// TODO CORS ENTFERNE
cors: {
origin: ['*'],
additionalHeaders: ['cache-control', 'x-requested-with']
}
}
}),
server.route({
method: 'GET',
path: '/teams/{id}',
handler: function (request, h) {
return new Promise((resolve, reject) => {
const id = request.params.id;
db().query('SELECT teams.id, teams.teamName FROM starter, teams, begegnungen WHERE begegnungen.id = "' + id + '" AND begegnungen.id = starter.begegnungs_id AND starter.team_id = teams.id', function (error, results, fields) {
if (error) throw error;
console.log(results);
return resolve(results);
});
});
},
options: {
validate: {
params: {
id: Joi.number().integer().min(0)
}
},
// TODO CORS ENTFERNE
cors: {
origin: ['*'],
additionalHeaders: ['cache-control', 'x-requested-with']
}
}
}),
// Den Sieger der Begegnung eintragen
// 1. Sieger ID eintragen
@@ -417,7 +19,7 @@ exports.configureRoutes = (server) => {
// }
// {"kumite":{"aka":{"mobobi":1,"jogai":1,"hansuku":1,"wasari":1,"ippon":1},"shiro":{"mobobi":1,"jogai":2,"hansuku":3,"wasari":4,"ippon":5}}}
server.route({
{
method: 'POST',
path: '/winner',
@@ -467,62 +69,62 @@ exports.configureRoutes = (server) => {
additionalHeaders: ['cache-control', 'x-requested-with']
}
}
}),
},
server.route({
method: 'POST',
path: '/lateRegistration',
{
method: 'POST',
path: '/lateRegistration',
handler: function (request, h) {
return new Promise((resolve, reject) => {
const encounter = request.payload.encounter;
const gid = request.payload.gid; //die eindeutige Gruppe
const tid = request.payload.tid;
const color = request.payload.color;
let team = request.payload.team;
console.log(encounter);
console.log(gid);
console.log(tid);
console.log(color);
team = team ? "team_turniergruppe" : "teilnehmer_turniergruppe"
console.log(team);
handler: function (request, h) {
return new Promise((resolve, reject) => {
const encounter = request.payload.encounter;
const gid = request.payload.gid; //die eindeutige Gruppe
const tid = request.payload.tid;
const color = request.payload.color;
let team = request.payload.team;
console.log(encounter);
console.log(gid);
console.log(tid);
console.log(color);
team = team ? "team_turniergruppe" : "teilnehmer_turniergruppe"
console.log(team);
const myquery = "INSERT INTO " + team + " (teilnehmer_id, turniergruppe_id) VALUES (" + tid + ", " + gid + "));";
const myquery2 = "UPDATE encounters SET " + color + " = " + gid + " WHERE (begegnung = " + encounter + ") AND (gruppen_ID = " + gid + ");";
const myquery = "INSERT INTO " + team + " (teilnehmer_id, turniergruppe_id) VALUES (" + tid + ", " + gid + "));";
const myquery2 = "UPDATE encounters SET " + color + " = " + gid + " WHERE (begegnung = " + encounter + ") AND (gruppen_ID = " + gid + ");";
// write score, winner
db().query(myquery, function (error, results, fields) {
if (error) throw error;
console.log(results);
return resolve(results);
});
// write next round
db().query(myquery2, function (error, results, fields) {
if (error) throw error;
console.log(results);
return resolve(results);
});
});
},
options: {
validate: {
payload: {
encounter: Joi.number().integer(),
gid: Joi.number().integer(),
winner: Joi.number().integer(),
wertungen: [Joi.string(), Joi.number()]
}
},
// TODO CORS ENTFERNE
cors: {
origin: ['*'],
additionalHeaders: ['cache-control', 'x-requested-with']
}
}
});
// write score, winner
db().query(myquery, function (error, results, fields) {
if (error) throw error;
console.log(results);
return resolve(results);
});
// write next round
db().query(myquery2, function (error, results, fields) {
if (error) throw error;
console.log(results);
return resolve(results);
});
});
},
options: {
validate: {
payload: {
encounter: Joi.number().integer(),
gid: Joi.number().integer(),
winner: Joi.number().integer(),
wertungen: [Joi.string(), Joi.number()]
}
},
// TODO CORS ENTFERNE
cors: {
origin: ['*'],
additionalHeaders: ['cache-control', 'x-requested-with']
}
}
},
server.route({
{
method: 'POST',
path: '/signup',
@@ -554,9 +156,9 @@ exports.configureRoutes = (server) => {
}
}
});
},
server.route({
{
method: 'POST',
path: '/sendMessage',
handler: function (request, h) {
@@ -580,9 +182,9 @@ exports.configureRoutes = (server) => {
}
}
});
},
server.route({
{
method: 'POST',
path: '/messages',
@@ -606,9 +208,9 @@ exports.configureRoutes = (server) => {
}
}
});
},
server.route({
{
method: 'DELETE',
path: '/message/{uid}/{mid}',
handler: function (request, h) {
@@ -637,5 +239,5 @@ exports.configureRoutes = (server) => {
}
}
})
};
}
])};

165
routes/group.js Normal file
View File

@@ -0,0 +1,165 @@
const {login} = require('../auth');
const Joi = require('joi');
const {db} = require('../db');
const jwt = require('jsonwebtoken');
exports.configureGroupRoutes = (server) => {
// server.route accepts an object or an array
return server.route([
{
// Alle Gruppen des $Turniers
method: 'GET',
path: '/group/{tid}',
handler: function (request, h) {
return new Promise((resolve, reject) => {
const tid = request.params.tid;
db().query('SELECT id, gid, turnier_id, geschlecht, gurtVon, gurtBis, disziplin, altervon, alterbis, pool, finalteilnehmer FROM turniergruppen WHERE turnier_id = "' + tid + '" ORDER BY gid', function (error, results, fields) {
if (error) throw error;
// console.log(results);
return resolve(results);
});
});
},
options: {
validate: {
params: {
tid: Joi.number().integer().min(0)
}
},
// TODO CORS ENTFERNE
cors: {
origin: ['*'],
additionalHeaders: ['cache-control', 'x-requested-with']
}
}
},
// Lege Finalgruppen an
// server.route({
// method: 'GET',
// path: '/final/{tid}/create',
// handler: function (request, h) {
// return new Promise((resolve, reject) => {
// const tid = request.params.tid;
// db().query('SELECT id, gid, turnier_id, geschlecht, gurtVon, gurtBis, disziplin, altervon, alterbis, pool, finalteilnehmer FROM turniergruppen WHERE turnier_id = "' + tid + '" ORDER BY gid',
// function (error, results, fields) {
// if (error) throw error;
// let highestGid = results[0].gid;
// let myquery = "";
// // Berechne höchste GID
// for (let i=0; i < results.length; i++) {
// if (highestGid < results[i].gid) {
// highestGid = results[i].gid;
// }
// }
// //
// // // Baue myquery für alle Gruppen, die keinen FINAL pool haben
// // for (let j=1; j <= highestGid; j++) {
// // for (let i = 0; i < results.length; i++) {
// // if ( j === results[i].gid ) {
// // myquery += "INSERT INTO turniergruppen (gid, turnier_id, geschlecht, gurtVon, gurtBis, disziplin, altervon, alterbis, pool)" +
// // "VALUES (" + results[i].gid + "," + results[i].turnier_id + "," + results[i].geschlecht + "," + results[i].gurtVon + "," + results[i].gurtBis + "," + results[i].disziplin + "," + results[i].altervon + "," + results[i].alterbis +", 'FINAL');\n";
// //
// // }
// // }
// // }
// // let gidWithFinal = [];
// // // Groups with final
// // for (let i=1; i <= highestGid; i++) {
// // if ( results[i].pool = "FINAL" ) {
// // gidWithFinal.push(results[i].gid)
// // }
// // }
// //
// // for (let i=1; i <= highestGid; i++) {
// // if ( gidWithFinal[i] != i ) {
// // // myquerry= ... ;
// // }
// // }
// // Durchlaufe alle Gruppen und Speichere im Object
// // {gid1:{ pre:[111,123,132]},
// // final: 322,
// // disziplin: 'Kata-einzel'
// // }
// // let lastGid = 1
// // console.log(results);
// let groupIDs = {};
// for (let i=1; i < results.length; i++ ) {
// if(!groupIDs['gid' + results[i].gid]){
// groupIDs['gid' + results[i].gid] = {
// "pre": [],
// "final": null,
// "disziplin": ''
// };
// }
// if (results[i].pool === "FINAL") {
// // groupIDs = {gid1:{
// // pre:[111,123,132]},
// // final: 322,
// // disziplin: 'Kata-einzel'
// // };
// groupIDs['gid' + results[i].gid].final = results[i].id;
// groupIDs['gid' + results[i].gid].disziplin = results[i].disziplin;
// } else {
// // groupIDs = {gid1:[111,123,132]}
// groupIDs['gid' + results[i].gid].pre.push(results[i].id);
// }
// }
// console.log('groupIDs');
// console.log(groupIDs);
// //TODO Alle FinalGruppen schreiben
// //TODO
// switch (pools) {
// case 1:
// // aus encounter begegnung 2+3
// [break;]
// case 2:
// // aus encounter begegnung 1
// [break;]
// ...
// case 4:
// // aus encounter begegnung 1 Sieger
// [break;]
// default:
// // Anweisungen werden ausgeführt,
// // falls keine der case-Klauseln mit expression übereinstimmt
// [break;]
// }
// return resolve(results);
// });
// const grouplist = resolve;
// console.log('grouplist');
// console.log(grouplist);
// });
// },
// options: {
// validate: {
// params: {
// tid: Joi.number().integer().min(0)
// }
// },
// // TODO CORS ENTFERNE
// cors: {
// origin: ['*'],
// additionalHeaders: ['cache-control', 'x-requested-with']
// }
// }
// }),
])};

81
routes/login.js Normal file
View File

@@ -0,0 +1,81 @@
const {login} = require('../auth');
const Joi = require('joi');
const {db} = require('../db');
const jwt = require('jsonwebtoken');
exports.configureLoginRoutes = (server) => {
// server.route accepts an object or an array
return server.route([
{
method: "GET", path: "/", config: {auth: false},
handler: function (request, h) {
return {text: 'Token not required'};
}
},
{
method: 'GET', path: '/restricted', options: {auth: 'admin'},
handler: function (request, h) {
return h
.response({text: 'You used a Token!'})
.type('text/html')
.header("Authorization", request.headers.authorization)
.code(201);
}
},
{
method: 'GET', path: '/token', options: {auth: 'admin',},
handler: async (request, h) => {
const token = request.query.token;
console.log(token);
const decoded = jwt.verify(token, 'NeverShareYourSecret');
console.log(decoded); // bar
return h
.response({text: 'You used a Token!'})
.type('text/html')
.header("Authorization", request.headers.authorization)
.code(201);
},
},
{
// {"login":{"email": "mario@wattsche.de", "password": "mmario"}}
method: 'POST',
path: '/authentications',
handler: async (request,h) => {
const {email, password} = request.payload.login;
const pwOk = await login(email, password);
console.log(pwOk);
if (pwOk === "wrong credentials"){
return h
.response(pwOk)
.type('text/html')
.code(403);
} else {
return h
.response(pwOk)
.type('text/html')
.header("Authorization", request.headers.authorization)
.code(200);
}
},
options: {
// TODO CORS ENTFERNE
// cors: {
// origin: ['*'],
// headers: ["Access-Control-Allow-Headers", "Access-Control-Allow-Origin","Accept", "Authorization", "Content-Type", "If-None-Match", "Accept-language"],
// credentials: true
// },
cors: {
origin: ['*'],
additionalHeaders: ['cache-control', 'x-requested-with']
},
auth: false
}
}
])
};

134
routes/participant.js Normal file
View File

@@ -0,0 +1,134 @@
const {login} = require('../auth');
const Joi = require('joi');
const {db} = require('../db');
const jwt = require('jsonwebtoken');
exports.configureParticipantRoutes = (server) => {
// server.route accepts an object or an array
return server.route([
{
// Alle Teilnehmer eines $Turniers
// TODO mit neuer struktur anpassen
method: 'GET',
path: '/tournament/{tid}/participants',
handler: async (request, h) => {
return new Promise((resolve, reject) => {
const tid = request.params.tid;
db().query(`SELECT turniergruppen.id AS gid, turniergruppen.turnier_id, encounters.begegnung, encounters.aka, encounters.shiro, teilnehmer.id, teilnehmer.vorname, teilnehmer.name, teilnehmer.verein
FROM turniergruppen, encounters, teilnehmer
WHERE turniergruppen.turnier_id = ${tid}
AND turniergruppen.id = encounters.gruppen_id
AND (encounters.aka = teilnehmer.id OR encounters.shiro = teilnehmer.id)`, function (error, results, fields) {
if (error) {
throw error;
} else {
return resolve(results);
}
});
});
},
options: {
validate: {
params: {
tid: Joi.number().integer().min(0)
}
},
// TODO CORS ENTFERNE
cors: {
origin: ['*'],
additionalHeaders: ['cache-control', 'x-requested-with']
}
}
},
// Alle Teilnehmer der Gruppe
{
method: 'GET',
path: '/group/{gid}/participants',
handler: function (request, h) {
return new Promise((resolve, reject) => {
const gid = request.params.gid;
db().query("SELECT teilnehmer.id, teilnehmer.name, teilnehmer.vorname, teilnehmer.verein FROM teilnehmer_turniergruppe, teilnehmer WHERE turniergruppe_id = " + gid + " AND teilnehmer_id = teilnehmer.id", function (error, results, fields) {
// db().query('SELECT id, gid, turnier_id, geschlecht, gurtVon, gurtBis, disziplin, altervon, alterbis, pool, finalteilnehmer FROM turniergruppen WHERE turnier_id = "' + tid + '" ORDER BY gid', function (error, results, fields) {
if (error) throw error;
// console.log(results);
return resolve(results);
});
});
},
options: {
validate: {
params: {
gid: Joi.number().integer().min(0)
}
},
// TODO CORS ENTFERNE
cors: {
origin: ['*'],
additionalHeaders: ['cache-control', 'x-requested-with']
}
}
},
// Alle Teilnehmer_ids der $Gruppe - Daten kommen aus der Auslosung
{
method: 'GET',
path: '/group/encounters/{gid}',
handler: function (request, h) {
return new Promise((resolve, reject) => {
const gid = request.params.gid;
// db().query('SELECT begegnungen.id FROM wettkampfbaeume, korunden, begegnungen WHERE wettkampfbaeume.gruppen_id = "' + gid + '" AND wettkampfbaeume.id = korunden.wettkampfbaum_id AND korunden.id = begegnungen.runden_id', function (error, results, fields) {
// db().query('SELECT * FROM wettkampfbaeume, korunden, begegnungen WHERE wettkampfbaeume.gruppen_id = "' + gid + '" AND wettkampfbaeume.id = korunden.wettkampfbaum_id AND korunden.id = begegnungen.runden_id', function (error, results, fields) {
// db().query('SELECT * FROM encounters WHERE gruppen_id = ' + gid, function (error, results, fields) {
db().query('SELECT * FROM encounters WHERE gruppen_id = ' + gid + ' ORDER BY begegnung DESC', function (error, results, fields) {
if (error) throw error;
// console.log(results);
return resolve(results);
});
});
},
options: {
validate: {
params: {
gid: Joi.number().integer().min(0)
}
},
// TODO CORS ENTFERNE
cors: {
origin: ['*'],
additionalHeaders: ['cache-control', 'x-requested-with']
}
}
},
// Teilnehmer zu ID
{
method: 'GET',
path: '/participant/{id}',
handler: function (request, h) {
return new Promise((resolve, reject) => {
const id = request.params.id;
db().query('SELECT teilnehmer.id, teilnehmer.vorname, teilnehmer.name, teilnehmer.verein FROM starter, teilnehmer, begegnungen WHERE begegnungen.id = "' + id + '" AND begegnungen.id = starter.begegnungs_id AND starter.teilnehmer_id = teilnehmer.id', function (error, results, fields) {
if (error) throw error;
console.log(results);
return resolve(results);
});
});
},
options: {
validate: {
params: {
id: Joi.number().integer().min(0)
}
},
// TODO CORS ENTFERNE
cors: {
origin: ['*'],
additionalHeaders: ['cache-control', 'x-requested-with']
}
}
},
])};

65
routes/team.js Normal file
View File

@@ -0,0 +1,65 @@
const {login} = require('../auth');
const Joi = require('joi');
const {db} = require('../db');
const jwt = require('jsonwebtoken');
exports.configureTeamRoutes = (server) => {
// server.route accepts an object or an array
return server.route([
// Alle Teams der Gruppe
{
method: 'GET',
path: '/group/{gid}/teams',
handler: function (request, h) {
return new Promise((resolve, reject) => {
const gid = request.params.gid;
db().query("SELECT teams.id, teams.teamName FROM team_turniergruppe, teams WHERE turniergruppe_id = " + gid + " AND team_id = teams.id", function (error, results, fields) {
if (error) throw error;
// console.log(results);
return resolve(results);
});
});
},
options: {
validate: {
params: {
gid: Joi.number().integer().min(0)
}
},
// TODO CORS ENTFERNE
cors: {
origin: ['*'],
additionalHeaders: ['cache-control', 'x-requested-with']
}
}
},
// Team zu ID
{
method: 'GET',
path: '/teams/{id}',
handler: function (request, h) {
return new Promise((resolve, reject) => {
const id = request.params.id;
db().query('SELECT teams.id, teams.teamName FROM starter, teams, begegnungen WHERE begegnungen.id = "' + id + '" AND begegnungen.id = starter.begegnungs_id AND starter.team_id = teams.id', function (error, results, fields) {
if (error) throw error;
console.log(results);
return resolve(results);
});
});
},
options: {
validate: {
params: {
id: Joi.number().integer().min(0)
}
},
// TODO CORS ENTFERNE
cors: {
origin: ['*'],
additionalHeaders: ['cache-control', 'x-requested-with']
}
}
},
])};

32
routes/tournament.js Normal file
View File

@@ -0,0 +1,32 @@
const {login} = require('../auth');
const Joi = require('joi');
const {db} = require('../db');
const jwt = require('jsonwebtoken');
exports.configureTournamentRoutes = (server) => {
// server.route accepts an object or an array
return server.route([
{
// Alle $Turniers
method: 'GET',
path: '/tournaments',
handler: function (request, h) {
return new Promise((resolve, reject) => {
db().query('SELECT * FROM turniere', function (error, results, fields) {
if (error) throw error;
// console.log(results);
return resolve(results);
});
});
},
options: {
auth: false,
// TODO CORS ENTFERNE
cors: {
origin: ['*'],
additionalHeaders: ['cache-control', 'x-requested-with']
}
}
},
])};

16
server.js Executable file → Normal file
View File

@@ -2,6 +2,11 @@
const Hapi = require('hapi');
const {configureAuth} = require('./auth');
const {configureLoginRoutes} = require('./routes/login');
const {configureTournamentRoutes} = require('./routes/tournament');
const {configureGroupRoutes} = require('./routes/group');
const {configureParticipantRoutes} = require('./routes/participant');
const {configureTeamRoutes} = require('./routes/team');
const {configureRoutes} = require('./routes');
const {db} = require('./db');
// const Bcrypt = require('bcrypt');
@@ -10,12 +15,17 @@ const {db} = require('./db');
const init = async () => {
const server = new Hapi.Server({
// host: '192.168.10.20',
// host: 'localhost',
// port: 8000,
port: 443,
host: 'localhost',
port: 8000,
// port: 443,
routes: {cors: true}
});
await configureAuth(server);
await configureLoginRoutes(server);
await configureTournamentRoutes(server);
await configureGroupRoutes(server);
await configureParticipantRoutes(server);
await configureTeamRoutes(server);
await configureRoutes(server);
await db().connect();