Skip to content
Snippets Groups Projects
Commit 6f4e872d authored by ExtraDev's avatar ExtraDev
Browse files

add CRUDS

parent 6a3f883e
No related branches found
No related tags found
No related merge requests found
......@@ -61,6 +61,21 @@ app.get('/tags/edition', (req, res) => {
res.json(result);
});
});
app.post('/tags/edition/tag', (req, res) => {
let year = req.body.year;
if (!year) {
res.status(http_status_codes_1.default.BAD_REQUEST).send({ error: "Missing arguments" });
return;
}
const query = "SELECT `id_tag` FROM `tag_team_edition` WHERE `year` = ?";
exports.db.query(query, [year], (err, result) => {
if (err) {
res.send(err);
return;
}
res.json(result);
});
});
// Insert a tag
app.post('/tags', (req, res) => {
let id_tag = req.body.id_tag;
......@@ -147,17 +162,59 @@ app.post('/teams', (req, res) => {
exports.db.query(query, [team_name, team_participants], (err, result) => {
if (err) {
res.status(http_status_codes_1.default.CONFLICT).send({ error: "Team name already exists!" });
return;
}
let id_team = result.insertId;
const query_tte = "INSERT INTO `tag_team_edition`(`id_tag`, `id_team`, `year`) VALUES (?,?,?)";
exports.db.query(query_tte, [tag, id_team, year], (err, result) => {
if (err) {
res.status(http_status_codes_1.default.INTERNAL_SERVER_ERROR).send({ error: "Something wrong append" });
return;
}
res.status(http_status_codes_1.default.OK).send();
});
});
});
app.put('/teams', (req, res) => {
let id_team = req.body.id_team;
let team_name = req.body.team_name;
let team_participants = req.body.team_participants;
let year = req.body.year_selected;
let tag = req.body.tag_selected;
if (!id_team || !team_name || !team_participants || !year || !tag) {
res.status(http_status_codes_1.default.BAD_REQUEST).send({ error: "Missing arguments" });
return;
}
const query = 'UPDATE `team` SET `name`= ?,`participants`= ? WHERE id_team = ?';
exports.db.query(query, [team_name, team_participants, id_team], (err, result) => {
if (err) {
res.status(http_status_codes_1.default.CONFLICT).send({ error: "Team name already exists!" });
return;
}
const query_tte = "UPDATE `tag_team_edition` SET `id_tag` = ? WHERE `tag_team_edition`.`id_team` = ? AND `tag_team_edition`.`year` = ? ";
exports.db.query(query_tte, [tag, id_team, year], (err, result) => {
if (err) {
res.status(http_status_codes_1.default.INTERNAL_SERVER_ERROR).send({ error: "Something wrong append" });
return;
}
res.status(http_status_codes_1.default.OK).send();
});
});
});
app.delete('/teams', (req, res) => {
let id_team = req.body.id_team;
if (!id_team) {
res.status(http_status_codes_1.default.BAD_REQUEST).send({ error: "Missing arguments" });
return;
}
const query = "DELETE FROM team WHERE id_team = ?";
exports.db.query(query, [id_team], (err, result) => {
if (err) {
res.status(http_status_codes_1.default.INTERNAL_SERVER_ERROR).send({ error: "Something wrong append" });
}
res.status(http_status_codes_1.default.OK).send();
});
});
/*
* ------------------------------- Entry / results --------------------------------------
*/
......
......@@ -72,6 +72,26 @@ app.get('/tags/edition', (req: Request, res: Response) => {
})
});
app.post('/tags/edition/tag', (req: Request, res: Response) => {
let year = req.body.year;
if (!year) {
res.status(StatusCode.BAD_REQUEST).send({error: "Missing arguments"});
return
}
const query = "SELECT `id_tag` FROM `tag_team_edition` WHERE `year` = ?"
db.query(query, [year], (err, result) => {
if (err) {
res.send(err);
return
}
res.json(result);
})
});
// Insert a tag
app.post('/tags', (req: Request, res: Response) => {
let id_tag = req.body.id_tag;
......@@ -184,6 +204,7 @@ app.post('/teams', (req: Request, res:Response) => {
db.query(query, [team_name, team_participants], (err, result) => {
if (err) {
res.status(StatusCode.CONFLICT).send({error: "Team name already exists!"});
return
}
let id_team = result.insertId;
......@@ -192,6 +213,41 @@ app.post('/teams', (req: Request, res:Response) => {
db.query(query_tte, [tag, id_team, year], (err, result) => {
if (err) {
res.status(StatusCode.INTERNAL_SERVER_ERROR).send({error: "Something wrong append"});
return
}
res.status(StatusCode.OK).send();
});
});
})
app.put('/teams', (req: Request, res:Response) => {
let id_team = req.body.id_team
let team_name = req.body.team_name;
let team_participants = req.body.team_participants;
let year = req.body.year_selected;
let tag = req.body.tag_selected;
if(!id_team || !team_name || !team_participants || !year || !tag) {
res.status(StatusCode.BAD_REQUEST).send({error: "Missing arguments"});
return
}
const query = 'UPDATE `team` SET `name`= ?,`participants`= ? WHERE id_team = ?';
db.query(query, [team_name, team_participants, id_team], (err, result) => {
if (err) {
res.status(StatusCode.CONFLICT).send({error: "Team name already exists!"});
return
}
const query_tte = "UPDATE `tag_team_edition` SET `id_tag` = ? WHERE `tag_team_edition`.`id_team` = ? AND `tag_team_edition`.`year` = ? ";
db.query(query_tte, [tag, id_team, year], (err, result) => {
if (err) {
res.status(StatusCode.INTERNAL_SERVER_ERROR).send({error: "Something wrong append"});
return
}
res.status(StatusCode.OK).send();
......@@ -199,6 +255,25 @@ app.post('/teams', (req: Request, res:Response) => {
});
})
app.delete('/teams',(req: Request, res:Response) => {
let id_team = req.body.id_team;
if(!id_team) {
res.status(StatusCode.BAD_REQUEST).send({error: "Missing arguments"});
return
}
const query = "DELETE FROM team WHERE id_team = ?";
db.query(query, [id_team], (err, result) => {
if (err) {
res.status(StatusCode.INTERNAL_SERVER_ERROR).send({error: "Something wrong append"});
}
res.status(StatusCode.OK).send();
});
});
/*
* ------------------------------- Entry / results --------------------------------------
*/
......
......@@ -2,9 +2,8 @@
<html lang="en">
<head>
<meta charset="UTF-8" />
<link rel="icon" type="image/svg+xml" href="/vite.svg" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Vite + Svelte</title>
<title>Boldor</title>
</head>
<body>
<div id="app"></div>
......
......@@ -10,11 +10,11 @@
<Router>
<header>
<h1 id="title">Boldor</h1>
<Link class="link" to="/">Home</Link>
<Link class="link" to="teams">Équipes</Link>
<Link class="link" to="team">Gestion des équipes</Link>
<Link class="link" to="entry">Résultats</Link>
<Link class="link" to="tags">Tag RFID</Link>
<Link to="/"><span class="nav-link">Home</span></Link>
<Link to="teams"><span class="nav-link">Équipes</span></Link>
<Link to="team"><span class="nav-link">Gestion des équipes</span></Link>
<Link to="entry"><span class="nav-link">Résultats</span></Link>
<Link to="tags"><span class="nav-link">Tag RFID</span></Link>
</header>
<main>
......@@ -62,10 +62,6 @@
text-align: center;
}
.link {
background-color: brown;
}
main {
width: 80%;
max-width: 1024px;
......
......@@ -30,7 +30,7 @@ select, button {
color: white;
border: 0;
padding: 10px;
font-size: 1.1em;
font-size: 1em;
font-weight: bold;
border-radius: 5px;
}
......@@ -80,3 +80,24 @@ form button {
font-size: 1.3em;
padding: 5px;
}
.nav-link {
font-size: 1.3em;
text-decoration: none;
color: white;
background-color: #1251c7;
padding: 10px;
border-radius: 5px;
}
.nav-link:hover {
background-color: #0a2f74;
}
.warning {
background-color: #E84855;
}
.warning:hover {
background-color: #9F4A54;
}
\ No newline at end of file
<script>
const edition_url = "http://localhost:8000/editions";
const tags_url = "http://localhost:8000/tags/edition/tag";
let year_selected = new Date().getFullYear();
let editions = [];
fetch(edition_url)
......@@ -8,6 +11,26 @@
editions = editions_data;
});
let tags_array= [];
let tag_selected;
let body_data = {
year: year_selected
};
fetch(tags_url,{
method: "POST",
body: JSON.stringify(body_data),
headers: {
"Content-type": "application/json; charset=UTF-8",
},
})
.then((response) => response.json())
.then((tags_data) => {
console.log(tags_data)
tags_array = tags_data;
tag_selected = tags_array[0].id_tag;
});
let entries = [];
function getEntries(year) {
let entries_url = "http://localhost:8000/entry?year=" + year;
......@@ -18,7 +41,6 @@
});
}
let year_selected = new Date().getFullYear();
function selectYear() {
getEntries(year_selected);
}
......@@ -30,9 +52,8 @@
getEntries(year_selected);
function sendEntry() {
console.log("get entries");
let body_data = {
id_tag: "19040562"
id_tag: tag_selected
};
fetch("http://localhost:8000/entry", {
......@@ -44,12 +65,7 @@
}).then(function (response) {
if (!response.ok) return Promise.reject(response.status);
getEntries(year_selected);
return response.json();
})
.then(function (data) {
console.log("okey" + data);
})
.catch(function (error) {
}).catch(function (error) {
console.log("Error: " + error);
});
......@@ -67,7 +83,13 @@
{/each}
</select>
<button on:click={sendEntry}>Add entry</button>
<select name="" id="" bind:value={tag_selected}>
{#each tags_array as tag}
<option value={tag.id_tag}>{tag.id_tag}</option>
{/each}
</select>
<button on:click|preventDefault={sendEntry}>Add entry</button>
</form>
<table>
......
......@@ -102,7 +102,7 @@
<button on:click|preventDefault={updateTag}>Mettre à jour</button>
{/if}
{:else}
<button on:click|preventDefault={deleteTag}>Supprimer le tag</button>
<button class="warning" on:click|preventDefault={deleteTag}>Supprimer le tag</button>
{/if}
</form>
......
......@@ -4,6 +4,8 @@
let teams = [];
let availableTags = [];
let year_selected = new Date().getFullYear();
let update = false;
let id_team;
let TEAMS_URL = "http://localhost:8000/teams/tag?year=";
function getTeams() {
......@@ -37,6 +39,7 @@
// Send data
function save() {
if(!update) {
if(!team_name || !team_participants || !tag_selected || !year_selected) {
alert("Vous devez remplir tous les champs");
return
......@@ -59,13 +62,38 @@
.then(function (response) {
if (!response.ok) return Promise.reject(response.status);
getTeams();
}).catch(function (error) {
console.log("Error: " + error);
});
} else {
if(!team_name || !team_participants || !tag_selected || !year_selected) {
alert("Vous devez remplir tous les champs");
return
}
let body_data = {
id_team: id_team,
team_name: team_name,
team_participants: team_participants,
tag_selected: tag_selected,
year_selected: year_selected
};
fetch("http://localhost:8000/teams", {
method: "PUT",
body: JSON.stringify(body_data),
headers: {
"Content-type": "application/json; charset=UTF-8",
},
})
.then(function (data) {
console.log("okey" + data);
})
.catch(function (error) {
.then(function (response) {
if (!response.ok) return Promise.reject(response.status);
getTeams();
}).catch(function (error) {
console.log("Error: " + error);
});
}
}
......@@ -76,11 +104,13 @@
function selectTeam(index) {
for (let i in teams) {
if(teams[i].id_team == index) {
id_team = teams[i].id_team;
team_name = teams[i].name;
team_participants = teams[i].participants;
tag_selected = teams[i].id_tag;
}
}
update = true;
}
getTeams()
......@@ -124,7 +154,11 @@
</select>
</div>
{#if !update}
<button on:click|preventDefault={save}>Enregistrer</button>
{:else}
<button on:click|preventDefault={save}>Mettre à jour les informations</button>
{/if}
</form>
</div>
......
<script>
const edition_url = "http://localhost:8000/editions";
let id_team;
let delete_mod = false;
let team_name = "";
let editions = [];
fetch(edition_url)
......@@ -23,6 +26,38 @@
getTeams(year_selected);
}
function selectTeam(id_selected) {
id_team = id_selected;
delete_mod = true;
for (let i in teams) {
if(teams[i].id_team == id_selected) {
team_name = teams[i].name;
}
}
}
function deleteTeam(){
let body_data = {
id_team: id_team
};
fetch("http://localhost:8000/teams", {
method: "DELETE",
body: JSON.stringify(body_data),
headers: {
"Content-type": "application/json; charset=UTF-8",
},
})
.then(function (response) {
if (!response.ok) return Promise.reject(response.status);
getTeams(year_selected);
id_team = "";
delete_mod = false;
}).catch(function (error) {
console.log("Error: " + error);
});
}
getTeams(year_selected);
</script>
......@@ -35,6 +70,10 @@
{/each}
</select>
{#if delete_mod}
<button class="warning" on:click={deleteTeam}>Confirmer la suppression de la team "{team_name}"</button>
{/if}
<table>
<tr>
<th>Tag RFID</th>
......@@ -45,7 +84,7 @@
<tr>
<td>{team.id_tag}</td>
<td>{team.name}</td>
<td>...</td>
<td><button on:click={()=>selectTeam(team.id_team)}>Supprimer</button></td>
</tr>
{/each}
</table>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment