UNPKG

mira-app-server

Version:

Mira Server - standalone server application using mira-app-core

89 lines 4.52 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ThumbRouter = void 0; const express_1 = require("express"); const BaseRouter_1 = require("./BaseRouter"); class ThumbRouter extends BaseRouter_1.BaseRouter { constructor(backend, thumbnailService, metadataService) { super(backend); this.thumbnailService = thumbnailService; this.metadataService = metadataService; this.router = (0, express_1.Router)(); this.setupRoutes(); } setupRoutes() { this.router.get('/scan', async (req, res) => { const libraryId = req.query.libraryId; const validation = await this.validateLibrary(libraryId); if (!validation.success) return res.status(validation.error.code).json(validation.error); this.thumbnailService.scanPending(libraryId, validation.library.libraryService, 'manual-scan'); res.json({ success: true, message: '开始扫描缩略图' }); }); this.router.get('/progress', async (req, res) => { const libraryId = req.query.libraryId; const validation = await this.validateLibrary(libraryId); if (!validation.success) return res.status(validation.error.code).json(validation.error); const data = await this.thumbnailService.getProgressData(libraryId, validation.library.libraryService); res.json({ success: true, data }); }); this.router.get('/cancel', (_req, res) => { this.thumbnailService.cancelScan(); res.json({ success: true, message: '已取消缩略图生成任务' }); }); this.router.get('/stats', async (req, res) => { const libraryId = req.query.libraryId; const validation = await this.validateLibrary(libraryId); if (!validation.success) return res.status(validation.error.code).json(validation.error); const data = await this.thumbnailService.getStats(libraryId, validation.library.libraryService); res.json({ success: true, data }); }); this.router.get('/generators', (_req, res) => { const generators = this.thumbnailService.getGenerators().map(g => ({ name: g.name, supportedExtensions: g.supportedExtensions, })); res.json({ success: true, data: generators }); }); this.router.get('/sync', async (req, res) => { const libraryId = req.query.libraryId; const validation = await this.validateLibrary(libraryId); if (!validation.success) return res.status(validation.error.code).json(validation.error); const data = await this.thumbnailService.syncThumbStatus(libraryId, validation.library.libraryService); res.json({ success: true, data }); }); this.router.get('/metadata/stats', async (req, res) => { const validation = await this.validateLibrary(req.query.libraryId); if (!validation.success) return res.status(validation.error.code).json(validation.error); res.json({ success: true, data: await this.metadataService.getStats(validation.library.libraryService) }); }); this.router.get('/metadata/scan', async (req, res) => { const libraryId = req.query.libraryId; const validation = await this.validateLibrary(libraryId); if (!validation.success) return res.status(validation.error.code).json(validation.error); const data = await this.metadataService.scanPending(libraryId, validation.library.libraryService); res.json({ success: data.available, data, message: data.available ? `已加入 ${data.queued} 个 metadata 任务` : 'ExifTool 不可用', }); }); this.router.get('/metadata/progress', async (req, res) => { const libraryId = req.query.libraryId; const validation = await this.validateLibrary(libraryId); if (!validation.success) return res.status(validation.error.code).json(validation.error); res.json({ success: true, data: this.metadataService.getProgressData(libraryId) }); }); } getRouter() { return this.router; } } exports.ThumbRouter = ThumbRouter; //# sourceMappingURL=ThumbRouter.js.map