Sieht gut aus und geht (noch keine Bildeingabe)
This commit is contained in:
95
nodejs-version/backend/dist/routes/images.js
vendored
Normal file
95
nodejs-version/backend/dist/routes/images.js
vendored
Normal file
@@ -0,0 +1,95 @@
|
||||
"use strict";
|
||||
var __importDefault = (this && this.__importDefault) || function (mod) {
|
||||
return (mod && mod.__esModule) ? mod : { "default": mod };
|
||||
};
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
const express_1 = require("express");
|
||||
const client_1 = require("@prisma/client");
|
||||
const path_1 = __importDefault(require("path"));
|
||||
const fs_1 = __importDefault(require("fs"));
|
||||
const router = (0, express_1.Router)();
|
||||
const prisma = new client_1.PrismaClient();
|
||||
router.get('/recipe/:recipeId', async (req, res, next) => {
|
||||
try {
|
||||
const { recipeId } = req.params;
|
||||
if (!recipeId) {
|
||||
return res.status(400).json({
|
||||
success: false,
|
||||
message: 'Recipe ID is required',
|
||||
});
|
||||
}
|
||||
const images = await prisma.recipeImage.findMany({
|
||||
where: { recipeId: parseInt(recipeId) },
|
||||
orderBy: { id: 'asc' }
|
||||
});
|
||||
return res.json({
|
||||
success: true,
|
||||
data: images,
|
||||
});
|
||||
}
|
||||
catch (error) {
|
||||
next(error);
|
||||
}
|
||||
});
|
||||
router.get('/serve/:imagePath(*)', (req, res, next) => {
|
||||
try {
|
||||
const imagePath = req.params.imagePath;
|
||||
if (!imagePath) {
|
||||
return res.status(400).json({
|
||||
success: false,
|
||||
message: 'Image path is required',
|
||||
});
|
||||
}
|
||||
const cleanPath = imagePath.replace(/^uploads\//, '');
|
||||
const fullPath = path_1.default.join(process.cwd(), '../../uploads', cleanPath);
|
||||
console.log(`Serving image: ${imagePath} -> ${fullPath}`);
|
||||
if (!fs_1.default.existsSync(fullPath)) {
|
||||
console.log(`Image not found: ${fullPath}`);
|
||||
return res.status(404).json({
|
||||
success: false,
|
||||
message: 'Image not found',
|
||||
requestedPath: imagePath,
|
||||
resolvedPath: fullPath
|
||||
});
|
||||
}
|
||||
res.set({
|
||||
'Access-Control-Allow-Origin': 'http://localhost:5173',
|
||||
'Access-Control-Allow-Credentials': 'true',
|
||||
'Cache-Control': 'public, max-age=31536000',
|
||||
});
|
||||
return res.sendFile(path_1.default.resolve(fullPath));
|
||||
}
|
||||
catch (error) {
|
||||
console.error('Error serving image:', error);
|
||||
next(error);
|
||||
}
|
||||
});
|
||||
router.get('/:id', async (req, res, next) => {
|
||||
try {
|
||||
const { id } = req.params;
|
||||
if (!id) {
|
||||
return res.status(400).json({
|
||||
success: false,
|
||||
message: 'Image ID is required',
|
||||
});
|
||||
}
|
||||
const image = await prisma.recipeImage.findUnique({
|
||||
where: { id: parseInt(id) }
|
||||
});
|
||||
if (!image) {
|
||||
return res.status(404).json({
|
||||
success: false,
|
||||
message: 'Image not found',
|
||||
});
|
||||
}
|
||||
return res.json({
|
||||
success: true,
|
||||
data: image,
|
||||
});
|
||||
}
|
||||
catch (error) {
|
||||
next(error);
|
||||
}
|
||||
});
|
||||
exports.default = router;
|
||||
//# sourceMappingURL=images.js.map
|
||||
Reference in New Issue
Block a user