const express = require('express'); const session = require('express-session'); const router = require('express').Router(); const path = require('path'); require('dotenv').config({path:'process.env'}); const app = express(); const mysql = require('mysql'); // Datenbankverbindung const db = mysql.createConnection({ host: 'localhost', user: 'root', password: '', database: 'webshop' }); // Verbindung zur MySQL-Datenbank herstellen db.connect(err => { if (err) { console.error('Fehler beim Verbinden zur Datenbank:', err); return; } console.log('Mit der Datenbank verbunden'); }); app.use(session({ secret: 'secret', resave: true, saveUninitialized: true })); app.use(express.json()); app.use(express.urlencoded({ extended: true })); app.use(express.static(path.join(__dirname, '/scripts'))); app.use(express.static(path.join(__dirname, '/static'))); // API-Route für Produkte app.get('/api/products', (req, res) => { // SQL-Abfrage für Produktdaten const sql = 'SELECT * FROM webshop.product'; // Abfrage ausführen db.query(sql, (err, results) => { if (err) { console.error('Fehler beim Abrufen der Produkte:', err); res.status(500).send('Fehler beim Abrufen der Produkte'); return; } res.json(results); // Rückgabe der Produktdaten als JSON }); }); app.get('/api/products/new', async (req, res) => { // SQL-Abfrage für Produktdaten const sql = 'SELECT * FROM webshop.product ORDER BY created_at DESC LIMIT 4'; // Abfrage ausführen db.query(sql, (err, results) => { if (err) { console.error('Fehler beim Abrufen der Produkte:', err); res.status(500).send('Fehler beim Abrufen der Produkte'); return; } res.json(results); // Rückgabe der Produktdaten als JSON }); }); app.get('/api/products/motorrad', async (req, res) => { // SQL-Abfrage für Produktdaten const sql = 'SELECT * FROM webshop.product WHERE category_id = 4'; // Abfrage ausführen db.query(sql, (err, results) => { if (err) { console.error('Fehler beim Abrufen der Produkte:', err); res.status(500).send('Fehler beim Abrufen der Produkte'); return; } res.json(results); // Rückgabe der Produktdaten als JSON }); }); app.get('/api/products/oldtimer', async (req, res) => { // SQL-Abfrage für Produktdaten const sql = 'SELECT * FROM webshop.product WHERE category_id = 2'; // Abfrage ausführen db.query(sql, (err, results) => { if (err) { console.error('Fehler beim Abrufen der Produkte:', err); res.status(500).send('Fehler beim Abrufen der Produkte'); return; } res.json(results); // Rückgabe der Produktdaten als JSON }); }); app.get('/api/products/lkw', async (req, res) => { // SQL-Abfrage für Produktdaten const sql = 'SELECT * FROM webshop.product WHERE category_id = 3'; // Abfrage ausführen db.query(sql, (err, results) => { if (err) { console.error('Fehler beim Abrufen der Produkte:', err); res.status(500).send('Fehler beim Abrufen der Produkte'); return; } res.json(results); // Rückgabe der Produktdaten als JSON }); }); app.get('/api/products/sportwagen', async (req, res) => { // SQL-Abfrage für Produktdaten const sql = 'SELECT * FROM webshop.product WHERE category_id = 1'; // Abfrage ausführen db.query(sql, (err, results) => { if (err) { console.error('Fehler beim Abrufen der Produkte:', err); res.status(500).send('Fehler beim Abrufen der Produkte'); return; } res.json(results); // Rückgabe der Produktdaten als JSON }); }); app.post('/api/user/registration', (req,res)=> { // SQL-Query für Nutzerregistration const {name, lower_name, email, passwd} = req.body; const sql = "INSERT INTO user (name, lower_name, email, passwd, passwd_hash_algo) VALUES (?, ?, ?, ?, 'none')" // Query abschicken db.query(sql, [name, lower_name, email, passwd], (err, results) => { if (err){ console.error('Fehler beim Schreiben in die Datenbank: ', err); res.status(500).send('Fehler beim Schreiben in die Datenbank'); return; } res.status(201).json({message: 'Nutzer erfolgreich hinzugefügt', id: results.insertId}) }) }) const getIndexRoute = require('./scripts/routes/other/route-index'); app.use('/', getIndexRoute); app.use((req, res) => { res.status(404).sendFile(path.join(__dirname, 'public', '404.html')); }); // Sever starten app.listen(process.env.APP_PORT, () => { console.log("\x1b[32m"); console.log(`Server is running on http://localhost:${process.env.APP_PORT}`); console.log("\x1b[0m"); console.log('Access it now...'); });