Initial commit
This commit is contained in:
86
app/controllers/admin/music_controller.js
Normal file
86
app/controllers/admin/music_controller.js
Normal file
@@ -0,0 +1,86 @@
|
||||
import app from '@adonisjs/core/services/app';
|
||||
import Music from '#models/music';
|
||||
import fs from 'node:fs';
|
||||
export default class AdminMusicController {
|
||||
async index({ view }) {
|
||||
const musics = await Music.all();
|
||||
return view.render('admin/music/index', { musics });
|
||||
}
|
||||
async create({ view }) {
|
||||
return view.render('admin/music/form', { music: null });
|
||||
}
|
||||
async store({ request, response, session }) {
|
||||
const { name } = request.only(['name']);
|
||||
const musicFile = request.file('file', {
|
||||
size: '10mb',
|
||||
extnames: ['mp3', 'wav', 'ogg'],
|
||||
});
|
||||
if (!musicFile) {
|
||||
session.flashErrors({ error: 'Veuillez télécharger un fichier audio.' });
|
||||
return response.redirect().back();
|
||||
}
|
||||
await musicFile.move(app.makePath('public/uploads/music'), {
|
||||
name: `${new Date().getTime()}_${musicFile.clientName}`
|
||||
});
|
||||
const url = `/uploads/music/${musicFile.fileName}`;
|
||||
await Music.create({ name, url });
|
||||
session.flash({ success: 'Musique ajoutée avec succès.' });
|
||||
return response.redirect('/admin/music');
|
||||
}
|
||||
async edit({ view, params, response }) {
|
||||
const music = await Music.find(params.id);
|
||||
if (!music) {
|
||||
return response.notFound();
|
||||
}
|
||||
return view.render('admin/music/form', { music });
|
||||
}
|
||||
async update({ request, params, response, session }) {
|
||||
const music = await Music.find(params.id);
|
||||
if (!music) {
|
||||
return response.notFound();
|
||||
}
|
||||
const { name } = request.only(['name']);
|
||||
const musicFile = request.file('file', {
|
||||
size: '10mb',
|
||||
extnames: ['mp3', 'wav', 'ogg'],
|
||||
});
|
||||
let url = music.url;
|
||||
if (musicFile) {
|
||||
const oldPath = app.makePath('public' + music.url);
|
||||
if (fs.existsSync(oldPath)) {
|
||||
try {
|
||||
fs.unlinkSync(oldPath);
|
||||
}
|
||||
catch (err) {
|
||||
console.error('Failed to delete old music file', err);
|
||||
}
|
||||
}
|
||||
await musicFile.move(app.makePath('public/uploads/music'), {
|
||||
name: `${new Date().getTime()}_${musicFile.clientName}`
|
||||
});
|
||||
url = `/uploads/music/${musicFile.fileName}`;
|
||||
}
|
||||
await music.merge({ name, url }).save();
|
||||
session.flash({ success: 'Musique modifiée avec succès.' });
|
||||
return response.redirect('/admin/music');
|
||||
}
|
||||
async destroy({ params, response, session }) {
|
||||
const music = await Music.find(params.id);
|
||||
if (!music) {
|
||||
return response.notFound();
|
||||
}
|
||||
const absolutePath = app.makePath('public' + music.url);
|
||||
if (fs.existsSync(absolutePath)) {
|
||||
try {
|
||||
fs.unlinkSync(absolutePath);
|
||||
}
|
||||
catch (err) {
|
||||
console.error('Failed to delete music file', err);
|
||||
}
|
||||
}
|
||||
await music.delete();
|
||||
session.flash({ success: 'Musique supprimée avec succès.' });
|
||||
return response.redirect('/admin/music');
|
||||
}
|
||||
}
|
||||
//# sourceMappingURL=music_controller.js.map
|
||||
Reference in New Issue
Block a user