renamed leftover references to bookApi

This commit is contained in:
2026-03-04 18:16:19 +01:00
parent b083d26666
commit 2fe4ffcda3
2 changed files with 83 additions and 89 deletions

View File

@@ -13,25 +13,25 @@ const app = express();
app.use(bodyParser.json()); app.use(bodyParser.json());
app.use(router); app.use(router);
app.get('/tournaments/available', async (req: Request, res: Response) => { app.get('/tournaments', async (req: Request, res: Response) => {
console.log(req.params) console.log(req.params)
if (!req.params.id) { if (!req.params.id) {
const tournaments = await tournamentService.getAllTournaments(); const tournaments = await tournamentService.getAllTournaments();
console.log(tournaments) console.log(tournaments)
return res.send(tournaments); return res.send(tournaments);
} }
const tournament = await tournamentService.getBookById(+req.params.id); const tournament = await tournamentService.getTournamentById(+req.params.id);
if (!tournament) { if (!tournament) {
return res.status(404).send({error: 'Book not found'}); return res.status(404).send({error: 'Tournament not found'});
} }
res.send(tournament); res.send(tournament);
}); });
app.post('/books', async (req: Request, res: Response) => { app.post('/tournaments', async (req: Request, res: Response) => {
console.log("post"); console.log("post");
try { try {
await tournamentService.addBook(req.body); await tournamentService.addTournament(req.body);
res.status(200).send(); res.status(200).send();
}catch (err){ }catch (err){
console.log(err); console.log(err);
@@ -39,28 +39,28 @@ app.post('/books', async (req: Request, res: Response) => {
} }
}); });
app.put('/books', async (req: Request, res: Response) => { app.put('/tournaments', async (req: Request, res: Response) => {
if (!req.query.id) { if (!req.query.id) {
return res.status(400).send({error: 'Missing id parameter'}); return res.status(400).send({error: 'Missing id parameter'});
} }
try { try {
const success = await tournamentService.updateBook(+req.query.id!, req.body); const success = await tournamentService.updateTournament(+req.query.id!, req.body);
} catch (err) { } catch (err) {
return res.status(400).send({error: 'Failed to update book'}); return res.status(400).send({error: 'Failed to update Tournament'});
} }
res.status(200).send({message: 'Book updated successfully'}); res.status(200).send({message: 'Tournament updated successfully'});
}); });
app.delete('/books', async (req: Request, res: Response) => { app.delete('/tournaments', async (req: Request, res: Response) => {
if (!req.query.id) { if (!req.query.id) {
return res.status(400).send({error: 'Missing id parameter'}); return res.status(400).send({error: 'Missing id parameter'});
} }
try { try {
const success = await tournamentService.deleteBook(+req.query.id!); const success = await tournamentService.deleteTournament(+req.query.id!);
} catch (err) { } catch (err) {
return res.status(400).send({error: 'Failed to delete book'}); return res.status(400).send({error: 'Failed to delete Tournament'});
} }
res.status(200).send({message: 'Book deleted successfully'}); res.status(200).send({message: 'Tournament deleted successfully'});
}); });
app.listen(port, () => { app.listen(port, () => {

View File

@@ -9,34 +9,89 @@ export class TournamentService {
private db: Database; private db: Database;
constructor() { constructor() {
if (fs.existsSync(this.dbFilename)) {
fs.unlinkSync(this.dbFilename); fs.unlinkSync(this.dbFilename);
}
this.db = new Database(this.dbFilename); this.db = new Database(this.dbFilename);
this.db.serialize(() => { this.db.serialize(() => {
this.db.run(`CREATE TABLE IF NOT EXISTS Tournaments this.db.run(`CREATE TABLE IF NOT EXISTS Tournaments
( (
id id INTEGER PRIMARY KEY AUTOINCREMENT,
INTEGER name TEXT,
PRIMARY description TEXT,
KEY maxTeamAmount INTEGER,
AUTOINCREMENT, currentTeamAmount INTEGER
name
TEXT,
description
TEXT,
maxTeamAmount
INTEGER,
currentTeamAmount
INTEGER
)`); )`);
}) })
this.seedDb(); this.seedDb();
} }
getAllTournaments(): Promise<Tournament[]> {
return new Promise<Tournament[]>((resolve, reject) => {
this.db.all(`SELECT *
FROM Tournaments`, (err: RunResult, rows: Tournament[]) => {
if (!err) {
resolve(rows);
}
reject(err);
});
});
}
getTournamentById(id: number): Promise<Tournament> {
return new Promise<Tournament>((resolve, reject) => {
this.db.get(`Select *
From Tournaments
WHERE id = ${id}`, (err: RunResult, tournament: Tournament) => {
if (!err) {
resolve(tournament);
}
reject(err);
});
})
}
addTournament(tournament: Tournament): Promise<void> {
return new Promise<void>((resolve, reject) => {
const statement = this.db.prepare('Insert Into Tournaments (name, description, maxTeamAmount, currentTeamAmount) VALUES (?, ?, ?, ?)')
statement.run(tournament.name, tournament.description, tournament.maxTeamAmount, tournament.currentTeamAmount);
resolve();
})
}
updateTournament(id: number, updatedTournament: Tournament): Promise<void> {
return new Promise((resolve, reject) => {
this.db.run(`Update Tournaments
Set name = $name,
description = $description,
maxTeamAmount = $maxTeamAmount,
currentTeamAmount = $currentTeamAmount
where id = $id`, {
$id: id,
$description: updatedTournament.description,
$maxTeamAmount: updatedTournament.maxTeamAmount,
$currentTeamAmount: updatedTournament.currentTeamAmount,
});
resolve();
})
}
deleteTournament(id: number): Promise<void> {
return new Promise((resolve, reject) => {
this.db.run('Delete From Tournaments where id = $id', {
$id: id,
});
resolve();
})
}
private seedDb() { private seedDb() {
fs.readFile(path.join(process.cwd(), "dist", this.csvFilename), 'utf-8', (_, data) => { fs.readFile(path.join(process.cwd(), "dist", this.csvFilename), 'utf-8', (_, data) => {
const entries = data.split('\n'); const entries = data.split('\n');
entries.shift(); entries.shift();
const statement = this.db.prepare("INSERT INTO Tournaments ( name, description, maxTeamAmount, currentTeamAmount) VALUES (?, ?, ?, ?)"); const statement = this.db.prepare(`INSERT INTO Tournaments
(name, description, maxTeamAmount, currentTeamAmount)
VALUES (?, ?, ?, ?)`);
entries.forEach(line => { entries.forEach(line => {
if (line) { if (line) {
const parts = line.split(','); const parts = line.split(',');
@@ -54,65 +109,4 @@ export class TournamentService {
statement.finalize(); statement.finalize();
}); });
} }
getAllTournaments(): Promise<Tournament[]> {
return new Promise<Tournament[]>((resolve, reject) => {
this.db.all(`SELECT *
FROM Tournaments`,
(err: RunResult, rows: Tournament[]) => {
if (!err) {
resolve(rows);
}
reject(err);
});
});
}
getBookById(id: number): Promise<Tournament> {
return new Promise<Tournament>((resolve, reject) => {
this.db.get(`Select *
From Tournaments
WHERE id = ${id}`, (err: RunResult, book: Tournament) => {
if (!err) {
resolve(book);
}
reject(err);
});
})
}
addBook(tournament: Tournament): Promise<void> {
return new Promise<void>((resolve, reject) => {
const statement = this.db.prepare('Insert Into Tournaments (name, description, maxTeamAmount, currentTeamAmount) VALUES (?, ?, ?, ?)')
statement.run(tournament.name, tournament.description, tournament.maxTeamAmount, tournament.currentTeamAmount);
resolve();
})
}
updateBook(id: number, updatedBook: Tournament): Promise<void> {
return new Promise((resolve, reject) => {
this.db.run(`Update Tournaments
Set name = $name,
description = $description,
maxTeamAmount = $maxTeamAmount,
currentTeamAmount = $currentTeamAmount
where id = $id`,
{
$id: id,
$description: updatedBook.description,
$maxTeamAmount: updatedBook.maxTeamAmount,
$currentTeamAmount: updatedBook.currentTeamAmount,
});
resolve();
})
}
deleteBook(id: number): Promise<void> {
return new Promise((resolve, reject) => {
this.db.run('Delete From Tournaments where id = $id', {
$id: id,
});
resolve();
})
}
} }