You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
67 lines
1.9 KiB
JavaScript
67 lines
1.9 KiB
JavaScript
import VideoService from '../services/VideoService.js';
|
|
import {validationResult} from 'express-validator';
|
|
import ApiError from './ErrorController.js';
|
|
|
|
class VideoController {
|
|
async create(req, res, next) {
|
|
try {
|
|
const errors = validationResult(req);
|
|
if(!errors.isEmpty()) {
|
|
return next(ApiError.BadRequest('Ошибка при валидации', errors.array()));
|
|
}
|
|
const { name, playlist, artist } = req.body;
|
|
const { videoHQ, videoLQ } = req.files;
|
|
|
|
const video = await VideoService.create({name, playlist, artist, videoHQ, videoLQ});
|
|
return res.json(video);
|
|
} catch (e) {
|
|
next(e);
|
|
}
|
|
}
|
|
|
|
async getAll(req, res, next) {
|
|
try {
|
|
const {page, search} = req.query;
|
|
const videos = await VideoService.getAll({page, search});
|
|
res.set('Access-Control-Expose-Headers', 'X-total-count');
|
|
res.set('X-total-count', videos.count);
|
|
|
|
return res.json({videos: videos.videos});
|
|
} catch (e) {
|
|
next(e);
|
|
}
|
|
}
|
|
|
|
async getOne(req, res, next) {
|
|
try {
|
|
const video = await VideoService.getOne();
|
|
return res.json(video);
|
|
} catch (e) {
|
|
next(e);
|
|
}
|
|
}
|
|
|
|
|
|
async edit(req, res, next) {
|
|
try {
|
|
const { id } = req.params;
|
|
const { name, playlist, artist } = req.body;
|
|
const video = await VideoService.edit({id, name, playlist, artist});
|
|
return res.json(video);
|
|
} catch (e) {
|
|
next(e);
|
|
}
|
|
}
|
|
|
|
async delete(req, res, next) {
|
|
try {
|
|
const { id } = req.params;
|
|
const video = await VideoService.delete({id});
|
|
return res.json(video);
|
|
} catch (e) {
|
|
next(e);
|
|
}
|
|
}
|
|
}
|
|
|
|
export default new VideoController(); |