81 lines
2.4 KiB
TypeScript
81 lines
2.4 KiB
TypeScript
import { Request, Response } from 'express';
|
|
import { AuthRequest } from '../../../middleware/auth/types.js';
|
|
import { galleryService } from '../../../services/galleryService.js';
|
|
import { s3Service } from '../../../services/s3Service.js';
|
|
import { logger } from '../../../config/logger.js';
|
|
|
|
export async function createGalleryImage(req: AuthRequest, res: Response) {
|
|
try {
|
|
const { articleId } = req.params;
|
|
const { url, caption, alt, width, height, size, format } = req.body;
|
|
|
|
const image = await galleryService.createImage({
|
|
url,
|
|
caption,
|
|
alt,
|
|
width,
|
|
height,
|
|
size,
|
|
format,
|
|
articleId
|
|
});
|
|
|
|
res.status(201).json(image);
|
|
} catch (error) {
|
|
logger.error('Error creating gallery image:', error);
|
|
res.status(500).json({ error: 'Failed to create gallery image' });
|
|
}
|
|
}
|
|
|
|
export async function updateGalleryImage(req: AuthRequest, res: Response) {
|
|
try {
|
|
const { id } = req.params;
|
|
const { caption, alt, order } = req.body;
|
|
|
|
const image = await galleryService.updateImage(id, {
|
|
caption,
|
|
alt,
|
|
order
|
|
});
|
|
|
|
res.json(image);
|
|
} catch (error) {
|
|
logger.error('Error updating gallery image:', error);
|
|
res.status(500).json({ error: 'Failed to update gallery image' });
|
|
}
|
|
}
|
|
|
|
export async function deleteGalleryImage(req: AuthRequest, res: Response) {
|
|
try {
|
|
const { id } = req.params;
|
|
await galleryService.deleteImage(id);
|
|
res.json({ message: 'Gallery image deleted successfully' });
|
|
} catch (error) {
|
|
logger.error('Error deleting gallery image:', error);
|
|
res.status(500).json({ error: 'Failed to delete gallery image' });
|
|
}
|
|
}
|
|
|
|
export async function reorderGalleryImages(req: AuthRequest, res: Response) {
|
|
try {
|
|
const { articleId } = req.params;
|
|
const { imageIds } = req.body;
|
|
|
|
await galleryService.reorderImages(articleId, imageIds);
|
|
res.json({ message: 'Gallery images reordered successfully' });
|
|
} catch (error) {
|
|
logger.error('Error reordering gallery images:', error);
|
|
res.status(500).json({ error: 'Failed to reorder gallery images' });
|
|
}
|
|
}
|
|
|
|
export async function getArticleGallery(req: Request, res: Response) {
|
|
try {
|
|
const { articleId } = req.params;
|
|
const images = await galleryService.getArticleGallery(articleId);
|
|
res.json(images);
|
|
} catch (error) {
|
|
logger.error('Error fetching article gallery:', error);
|
|
res.status(500).json({ error: 'Failed to fetch gallery images' });
|
|
}
|
|
} |