Tried adding API-backend
This commit is contained in:
20
api-backend/src/index.ts
Normal file
20
api-backend/src/index.ts
Normal file
@@ -0,0 +1,20 @@
|
||||
import * as express from 'express';
|
||||
import pathRoutes from './routes/parkRoutes';
|
||||
import coasterRoutes from './routes/coasterRoutes';
|
||||
|
||||
const app = express();
|
||||
const port = 3000;
|
||||
|
||||
// Middleware für JSON-Anfragen
|
||||
app.use(express.json());
|
||||
|
||||
// Routen hinzufügen
|
||||
app.use('/api/parks', pathRoutes);
|
||||
app.use('/api/coasters', coasterRoutes);
|
||||
|
||||
// Start des Servers
|
||||
app.listen(port, () => {
|
||||
console.log(`Server läuft auf http://localhost:${port}`);
|
||||
});
|
||||
|
||||
export default app;
|
||||
21
api-backend/src/models/coaster.ts
Normal file
21
api-backend/src/models/coaster.ts
Normal file
@@ -0,0 +1,21 @@
|
||||
import sqlite3 from 'sqlite3';
|
||||
|
||||
const db = new sqlite3.Database('./coasterdb.sqlite3');
|
||||
|
||||
export const getCoasters = (): Promise<any[]> => {
|
||||
return new Promise((resolve, reject) => {
|
||||
db.all("SELECT * FROM coasters", (err, rows) => {
|
||||
if (err) reject(err);
|
||||
else resolve(rows);
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
export const getCoasterById = (id: number): Promise<any> => {
|
||||
return new Promise((resolve, reject) => {
|
||||
db.get("SELECT * FROM coasters WHERE id = ?", [id], (err, row) => {
|
||||
if (err) reject(err);
|
||||
else resolve(row);
|
||||
});
|
||||
});
|
||||
};
|
||||
21
api-backend/src/models/park.ts
Normal file
21
api-backend/src/models/park.ts
Normal file
@@ -0,0 +1,21 @@
|
||||
import sqlite3 from 'sqlite3';
|
||||
|
||||
const db = new sqlite3.Database('./coasterdb.sqlite3');
|
||||
|
||||
export const getParks = (): Promise<any[]> => {
|
||||
return new Promise((resolve, reject) => {
|
||||
db.all("SELECT * FROM parks", (err, rows) => {
|
||||
if (err) reject(err);
|
||||
else resolve(rows);
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
export const getParkById = (id: number): Promise<any> => {
|
||||
return new Promise((resolve, reject) => {
|
||||
db.get("SELECT * FROM parks WHERE id = ?", [id], (err, row) => {
|
||||
if (err) reject(err);
|
||||
else resolve(row);
|
||||
});
|
||||
});
|
||||
};
|
||||
31
api-backend/src/routes/coasterRoutes.ts
Normal file
31
api-backend/src/routes/coasterRoutes.ts
Normal file
@@ -0,0 +1,31 @@
|
||||
import { Router } from 'express';
|
||||
import { getCoasters, getCoasterById } from '../models/coaster';
|
||||
|
||||
const router = Router();
|
||||
|
||||
// Alle Achterbahnen anzeigen
|
||||
router.get('/', async (req, res) => {
|
||||
try {
|
||||
const coasters = await getCoasters();
|
||||
res.json(coasters);
|
||||
} catch (err) {
|
||||
res.status(500).json({ error: err.message });
|
||||
}
|
||||
});
|
||||
|
||||
// Achterbahn nach ID anzeigen
|
||||
router.get('/:id', async (req, res) => {
|
||||
const { id } = req.params;
|
||||
try {
|
||||
const coaster = await getCoasterById(Number(id));
|
||||
if (coaster) {
|
||||
res.json(coaster);
|
||||
} else {
|
||||
res.status(404).json({ message: 'Achterbahn nicht gefunden' });
|
||||
}
|
||||
} catch (err) {
|
||||
res.status(500).json({ error: err.message });
|
||||
}
|
||||
});
|
||||
|
||||
export default router;
|
||||
31
api-backend/src/routes/parkRoutes.ts
Normal file
31
api-backend/src/routes/parkRoutes.ts
Normal file
@@ -0,0 +1,31 @@
|
||||
import { Router } from 'express';
|
||||
import { getParks, getParkById } from '../models/park';
|
||||
|
||||
const router = Router();
|
||||
|
||||
// Alle Parks anzeigen
|
||||
router.get('/', async (req, res) => {
|
||||
try {
|
||||
const parks = await getParks();
|
||||
res.json(parks);
|
||||
} catch (err) {
|
||||
res.status(500).json({ error: err.message });
|
||||
}
|
||||
});
|
||||
|
||||
// Park nach ID anzeigen
|
||||
router.get('/:id', async (req, res) => {
|
||||
const { id } = req.params;
|
||||
try {
|
||||
const park = await getParkById(Number(id));
|
||||
if (park) {
|
||||
res.json(park);
|
||||
} else {
|
||||
res.status(404).json({ message: 'Park nicht gefunden' });
|
||||
}
|
||||
} catch (err) {
|
||||
res.status(500).json({ error: err.message });
|
||||
}
|
||||
});
|
||||
|
||||
export default router;
|
||||
2204
package-lock.json
generated
2204
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@@ -6,9 +6,12 @@
|
||||
"scripts": {
|
||||
"dev": "vite",
|
||||
"build": "vue-tsc -b && vite build",
|
||||
"preview": "vite preview"
|
||||
"preview": "vite preview",
|
||||
"api-backend": "node --loader ts-node/esm api-backend/src/index.ts"
|
||||
},
|
||||
"dependencies": {
|
||||
"express": "^5.1.0",
|
||||
"sqlite3": "^5.1.7",
|
||||
"vue": "^3.5.13"
|
||||
},
|
||||
"devDependencies": {
|
||||
@@ -16,13 +19,15 @@
|
||||
"@tailwindcss/postcss7-compat": "^2.2.17",
|
||||
"@tsconfig/node18": "^18.2.4",
|
||||
"@types/cors": "^2.8.17",
|
||||
"@types/node": "^22.12.0",
|
||||
"@types/express": "^5.0.1",
|
||||
"@types/node": "^22.15.14",
|
||||
"@vitejs/plugin-vue": "^5.2.1",
|
||||
"@vue/tsconfig": "^0.7.0",
|
||||
"autoprefixer": "^10.4.20",
|
||||
"axios": "^1.7.9",
|
||||
"postcss": "^8.5.1",
|
||||
"tailwindcss": "^4.0.0",
|
||||
"ts-node": "^10.9.2",
|
||||
"typescript": "~5.6.2",
|
||||
"vite": "^6.0.5",
|
||||
"vue-router": "^4.5.0",
|
||||
|
||||
Reference in New Issue
Block a user