mira-app-server
Version:
Mira Server - standalone server application using mira-app-core
89 lines • 4.52 kB
JavaScript
"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