관리자 기능과 계정 즐겨찾기 개선
This commit is contained in:
@@ -3,7 +3,12 @@ import bcrypt from 'bcryptjs';
|
||||
import { createRequireAdmin } from '../middleware/auth.js';
|
||||
import { contentHash, validateCards, nowIso } from '../utils.js';
|
||||
import { resolveDeckCards } from '../services/cardResolver.js';
|
||||
import { getPreviewUrl } from '../services/previewImage.js';
|
||||
import {
|
||||
getPreviewUrl,
|
||||
deletePreviewImage,
|
||||
listOrphanPreviewImages,
|
||||
deleteOrphanPreviewImages,
|
||||
} from '../services/previewImage.js';
|
||||
import { getAvatarUrl, saveAvatarImage, deleteAvatarImage } from '../services/avatarImage.js';
|
||||
|
||||
/**
|
||||
@@ -237,13 +242,29 @@ export function createAdminRouter(db) {
|
||||
});
|
||||
});
|
||||
|
||||
router.get('/previews/orphans', (_req, res) => {
|
||||
const referencedCodes = db.prepare('SELECT share_code FROM decks').all().map((row) => row.share_code);
|
||||
const files = listOrphanPreviewImages(referencedCodes);
|
||||
res.json({
|
||||
files,
|
||||
totalCount: files.length,
|
||||
totalBytes: files.reduce((sum, file) => sum + file.size, 0),
|
||||
});
|
||||
});
|
||||
|
||||
router.delete('/previews/orphans', (_req, res) => {
|
||||
const referencedCodes = db.prepare('SELECT share_code FROM decks').all().map((row) => row.share_code);
|
||||
res.json({ ok: true, ...deleteOrphanPreviewImages(referencedCodes) });
|
||||
});
|
||||
|
||||
router.delete('/decks/:shareCode', (req, res) => {
|
||||
const row = db.prepare('SELECT id FROM decks WHERE share_code = ?').get(req.params.shareCode);
|
||||
const row = db.prepare('SELECT id, share_code FROM decks WHERE share_code = ?').get(req.params.shareCode);
|
||||
if (!row) {
|
||||
return res.status(404).json({ error: '덱을 찾을 수 없습니다.' });
|
||||
}
|
||||
db.prepare('DELETE FROM decks WHERE id = ?').run(row.id);
|
||||
res.json({ ok: true });
|
||||
const previewDeleted = deletePreviewImage(row.share_code);
|
||||
res.json({ ok: true, previewDeleted });
|
||||
});
|
||||
|
||||
return router;
|
||||
|
||||
Reference in New Issue
Block a user