43 lines
1.7 KiB
JavaScript
43 lines
1.7 KiB
JavaScript
import app from '@adonisjs/core/services/app';
|
|
import Image from '#models/image';
|
|
import fs from 'node:fs';
|
|
export default class ImagesController {
|
|
async index({ view }) {
|
|
const images = await Image.query().orderBy('created_at', 'desc');
|
|
return view.render('admin/images/index', { images });
|
|
}
|
|
async store({ request, response, session }) {
|
|
const imageFile = request.file('image', {
|
|
size: '5mb',
|
|
extnames: ['jpg', 'png', 'jpeg', 'webp', 'gif'],
|
|
});
|
|
if (!imageFile) {
|
|
session.flashErrors({ error: 'Please upload an image file.' });
|
|
return response.redirect().back();
|
|
}
|
|
if (imageFile.hasErrors) {
|
|
session.flashErrors({ error: imageFile.errors[0].message });
|
|
return response.redirect().back();
|
|
}
|
|
await imageFile.move(app.makePath('public/uploads/images'));
|
|
await Image.create({
|
|
filePath: `/uploads/images/${imageFile.fileName}`,
|
|
originalName: imageFile.clientName,
|
|
mimeType: imageFile.type + '/' + imageFile.subtype,
|
|
size: imageFile.size,
|
|
});
|
|
session.flash({ success: 'Image uploaded successfully.' });
|
|
return response.redirect().back();
|
|
}
|
|
async destroy({ params, response, session }) {
|
|
const image = await Image.findOrFail(params.id);
|
|
const absolutePath = app.makePath('public' + image.filePath);
|
|
if (fs.existsSync(absolutePath)) {
|
|
fs.unlinkSync(absolutePath);
|
|
}
|
|
await image.delete();
|
|
session.flash({ success: 'Image deleted successfully.' });
|
|
return response.redirect().back();
|
|
}
|
|
}
|
|
//# sourceMappingURL=images_controller.js.map
|