migrate rote to new folder
This commit is contained in:
0
.gitignore
vendored
Executable file → Normal file
0
.gitignore
vendored
Executable file → Normal file
24
db.js
Executable file → Normal file
24
db.js
Executable file → Normal 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
0
package-lock.json
generated
Executable file → Normal file
0
package.json
Executable file → Normal file
0
package.json
Executable file → Normal file
516
routes.js
Executable file → Normal file
516
routes.js
Executable file → Normal 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
165
routes/group.js
Normal 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
81
routes/login.js
Normal 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
134
routes/participant.js
Normal 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
65
routes/team.js
Normal 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
32
routes/tournament.js
Normal 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
16
server.js
Executable file → Normal 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();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user