tkd_neu/server/controllers/memberController.js

74 lines
2.1 KiB
JavaScript
Raw Normal View History

const bcrypt = require("bcryptjs");
const jwt = require("jsonwebtoken");
const { Pool } = require("pg");
// Datenbankverbindung
const pool = new Pool({
user: process.env.DB_USER,
host: process.env.DB_HOST,
database: process.env.DB_NAME,
password: process.env.DB_PASSWORD,
port: 5432,
});
const allMembers = async (req, res) => {
const { id } = req.body; // Abteilungs-ID aus dem Request-Body
try {
// Überprüfen, ob eine ID übergeben wurde
if (!id) {
return res.status(400).json({ message: "Abteilungs-ID fehlt" });
}
// Abfrage der Mitglieder basierend auf der Abteilungs-ID
const allMembers = await pool.query(
`
SELECT m.*
FROM mitglieder m
JOIN Abteilungszuordnung az ON m.ID = az.FID_Mitglied
WHERE az.FID_Abteilung = $1
`,
[id]
);
// Wenn keine Mitglieder gefunden wurden
if (allMembers.rows.length === 0) {
return res
.status(404)
.json({ message: "Keine Mitglieder in dieser Abteilung gefunden" });
}
// Erfolgreiche Antwort mit den Mitgliedern
res.status(200).json({ members: allMembers.rows });
} catch (err) {
res.status(500).json({
message: "Fehler beim Abrufen der Mitglieder",
error: err.message,
});
}
};
const newMember = async (req, res) => {
const { vorname, nachname, geburtsdatum, abteilung, adresse, probe } =
req.body;
try {
const newMember = await pool.query(
"INSERT INTO mitglieder (vorname, nachname, geburtsdatum, adresse, probe) VALUES ($1, $2, $3, $4, $5) RETURNING id",
[vorname, nachname, geburtsdatum, adresse, probe]
);
const intoAbt = await pool.query(
"INSERT INTO Abteilungszuordnung (FID_Mitglied, FID_Abteilung) VALUES ($1, $2)",
[newMember.rows[0].id, abteilung]
);
res
.status(201)
.json({ message: "Mitglied erstellt", member: newMember.rows[0] });
} catch (err) {
res.status(500).json({
message: "Fehler beim Erstellen des Mitglieds",
error: err.message,
});
}
};
module.exports = { allMembers, newMember };