Add Temporary statistics endpoint
This commit is contained in:
@@ -130,3 +130,32 @@ export function getKitsuIdSeriesEntries(kitsuId, episode) {
|
|||||||
]
|
]
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
export async function computeTorrentStatistics() {
|
||||||
|
try {
|
||||||
|
// Global Stats
|
||||||
|
const totalTorrents = await Torrent.count();
|
||||||
|
|
||||||
|
// Stats by Provider
|
||||||
|
const torrentsByProvider = await Torrent.findAll({
|
||||||
|
attributes: ['provider', [Sequelize.fn('COUNT', Sequelize.col('provider')), 'count']],
|
||||||
|
group: ['provider']
|
||||||
|
});
|
||||||
|
|
||||||
|
// Stats by Content Type (Movie, Series, etc.)
|
||||||
|
const torrentsByType = await Torrent.findAll({
|
||||||
|
attributes: ['type', [Sequelize.fn('COUNT', Sequelize.col('type')), 'count']],
|
||||||
|
group: ['type']
|
||||||
|
});
|
||||||
|
|
||||||
|
return {
|
||||||
|
totalTorrents,
|
||||||
|
torrentsByProvider,
|
||||||
|
torrentsByType,
|
||||||
|
};
|
||||||
|
} catch (error) {
|
||||||
|
console.error('Error computing statistics:', error);
|
||||||
|
throw error;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ import { parseConfiguration } from './lib/configuration.js';
|
|||||||
import landingTemplate from './lib/landingTemplate.js';
|
import landingTemplate from './lib/landingTemplate.js';
|
||||||
import { manifest } from './lib/manifest.js';
|
import { manifest } from './lib/manifest.js';
|
||||||
import * as moch from './moch/moch.js';
|
import * as moch from './moch/moch.js';
|
||||||
|
import { computeTorrentStatistics } from './lib/repository.js';
|
||||||
|
|
||||||
const router = new Router();
|
const router = new Router();
|
||||||
const limiter = rateLimit({
|
const limiter = rateLimit({
|
||||||
@@ -99,6 +100,20 @@ router.get('/:moch/:apiKey/:infoHash/:cachedEntryInfo/:fileIndex/:filename?', (r
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Temporary solution to provide statistics (NOT FOR PRODUCTION USE)
|
||||||
|
* easy way to know how many torrents are stored in the PG database
|
||||||
|
* These data should not be exposed to the public
|
||||||
|
*/
|
||||||
|
router.get('/statistics', async (req, res) => {
|
||||||
|
try {
|
||||||
|
const stats = await computeTorrentStatistics();
|
||||||
|
res.json(stats);
|
||||||
|
} catch (error) {
|
||||||
|
res.status(500).json({ error: 'Failed to compute statistics' });
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
export default function (req, res) {
|
export default function (req, res) {
|
||||||
router(req, res, function () {
|
router(req, res, function () {
|
||||||
res.statusCode = 404;
|
res.statusCode = 404;
|
||||||
|
|||||||
Reference in New Issue
Block a user