diff --git a/controllers/imageController.js b/controllers/imageController.js index 0353c26..a0cf442 100644 --- a/controllers/imageController.js +++ b/controllers/imageController.js @@ -1,4 +1,4 @@ -const { Image } = require('../models'); +const { Image, MenuItem, Page } = require('../models'); const { v4: uuidv4 } = require('uuid'); const multer = require('multer'); const path = require('path'); @@ -17,17 +17,33 @@ const upload = multer({ storage }); exports.uploadImage = upload.single('image'); +exports.getAllPages = async (req, res) => { + try { + const pages = await MenuItem.findAll(); + res.status(200).json(pages.map((item) => {return { link: item.link, name: item.name}; })); + } catch (error) { + console.log(error); + res.status(500).send('Fehler beim Auslesen'); + } +} + exports.saveImageDetails = async (req, res) => { try { - const { title, description, pageId } = req.body; + const { title, description, page } = req.body; const filename = req.file.filename; + const pageItem = await Page.findAll({ where: { link: page } }); + console.log(pageItem) const newImage = await Image.create({ id: uuidv4(), filename, title, description, - pageId: pageId || null + pageId: pageItem && pageItem[0] ? pageItem[0].id : null }); + if (page) { + const imageUrl = `/uploads/${filename}`; + await MenuItem.update({ image: imageUrl }, { where: { link: page} }); + } res.status(201).json(newImage); } catch (error) { console.error('Fehler beim Speichern des Bildes:', error); @@ -37,7 +53,7 @@ exports.saveImageDetails = async (req, res) => { exports.getImages = async (req, res) => { try { - const images = await Image.findAll({ order: [['title', 'ASC']]}); + const images = await Image.findAll({ order: [['title', 'ASC']] }); res.status(200).json(images); } catch (error) { console.error('Fehler beim Abrufen der Bilder:', error); diff --git a/routes/image.js b/routes/image.js index 41b65f6..f0c58e2 100644 --- a/routes/image.js +++ b/routes/image.js @@ -1,12 +1,14 @@ const express = require('express'); const router = express.Router(); -const { uploadImage, saveImageDetails, getImages, getImagesByPage, getImageById, getImageByHash, updateImage } = require('../controllers/imageController'); +const { getAllPages, uploadImage, saveImageDetails, getImages, getImagesByPage, getImageById, getImageByHash, updateImage } = require('../controllers/imageController'); const authMiddleware = require('../middleware/authMiddleware') router.post('/', authMiddleware, uploadImage, saveImageDetails); router.get('/', authMiddleware, getImages); router.get('/page/:pageId', getImagesByPage); +router.put('/hash/:id', getImageByHash); +router.get('/pages', getAllPages); router.get('/:id', getImageById); router.put('/:id', authMiddleware, updateImage); -router.put('/hash/:id', getImageByHash); + module.exports = router; diff --git a/src/content/admin/ImageUpload.vue b/src/content/admin/ImageUpload.vue index 8275b42..c8a7d2f 100644 --- a/src/content/admin/ImageUpload.vue +++ b/src/content/admin/ImageUpload.vue @@ -1,134 +1,145 @@ - - - - - \ No newline at end of file +}; + + + \ No newline at end of file