const config = require('../config.js') const db = require('knex')(config.database) let albumsController = {} albumsController.list = function(req, res, next){ if(req.headers.auth !== config.adminToken) return res.status(401).send('not-authorized') let fields = ['id', 'name'] if(req.headers.extended !== undefined) fields.push('timestamp') db.table('albums').select(fields).where('enabled', 1).then((albums) => { if(req.headers.extended === undefined) return res.json({ success: true, albums }) let ids = [] for(let album of albums){ album.date = new Date(album.timestamp * 1000) album.date = album.date.getFullYear() + '-' + album.date.getMonth() + '-' + album.date.getDate() + ' ' + (album.date.getHours() < 10 ? '0' : '') + album.date.getHours() + ':' + (album.date.getMinutes() < 10 ? '0' : '') + album.date.getMinutes() + ':' + (album.date.getSeconds() < 10 ? '0' : '') + album.date.getSeconds() ids.push(album.id) } db.table('files').whereIn('albumid', ids).select('albumid').then((files) => { let albumsCount = {} for(let id of ids) albumsCount[id] = 0 for(let file of files) albumsCount[file.albumid] += 1 for(let album of albums) album.files = albumsCount[album.id] return res.json({ success: true, albums }) }) }) } albumsController.create = function(req, res, next){ if(req.headers.auth !== config.adminToken) return res.status(401).send('not-authorized') let name = req.headers.name if(name === undefined || name === '') return res.json({ success: false, description: 'No album name specified' }) db.table('albums').where('name', name).then((album) => { if(album.length !== 0) return res.json({ success: false, description: 'There\'s already an album with that name' }) db.table('albums').insert({ name: name, enabled: 1, timestamp: Math.floor(Date.now() / 1000) }).then(() => { return res.json({ success: true }) }) }) } module.exports = albumsController