47 lines
1.1 KiB
JavaScript
47 lines
1.1 KiB
JavaScript
const Route = require('../../structures/Route');
|
|
const Util = require('../../utils/Util');
|
|
|
|
class fileGET extends Route {
|
|
constructor() {
|
|
super('/file/:id', 'get');
|
|
}
|
|
|
|
async run(req, res, db, user) {
|
|
const { id } = req.params;
|
|
if (!id) return res.status(400).json({ message: 'Invalid file ID supplied' });
|
|
|
|
/*
|
|
Make sure the file exists
|
|
*/
|
|
let file = await db.table('files').where({ id, userId: user.id }).first();
|
|
if (!file) return res.status(400).json({ message: 'The file doesn\'t exist or doesn\'t belong to the user' });
|
|
|
|
file = Util.constructFilePublicLink(req, file);
|
|
|
|
/*
|
|
Fetch the albums
|
|
*/
|
|
const albums = await db.table('albumsFiles')
|
|
.where('fileId', id)
|
|
.join('albums', 'albums.id', 'albumsFiles.albumId')
|
|
.select('albums.id', 'albums.name');
|
|
|
|
/*
|
|
Fetch the tags
|
|
*/
|
|
const tags = await db.table('fileTags')
|
|
.where('fileId', id)
|
|
.join('tags', 'tags.id', 'fileTags.tagId')
|
|
.select('tags.id', 'tags.uuid', 'tags.name');
|
|
|
|
return res.json({
|
|
message: 'Successfully retrieved file',
|
|
file,
|
|
albums,
|
|
tags
|
|
});
|
|
}
|
|
}
|
|
|
|
module.exports = fileGET;
|