import { Router } from "express"; import { db } from "@workspace/db"; import { filesTable, foldersTable } from "@workspace/db"; import { eq, and } from "drizzle-orm"; import { requireAuth, AuthRequest } from "../middlewares/auth.js"; const router = Router(); router.use(requireAuth); // GET /api/trash — list current user's trashed files and folders router.get("/", async (req: AuthRequest, res) => { try { const userId = req.userId!; const files = await db.query.filesTable.findMany({ where: and(eq(filesTable.ownerId, userId), eq(filesTable.status, "trashed")), }); const folders = await db.query.foldersTable.findMany({ where: and(eq(foldersTable.ownerId, userId), eq(foldersTable.trashed, true)), }); res.json({ files: files.map((f) => ({ id: f.id, name: f.name, folderId: f.folderId, ownerId: f.ownerId, ownerEmail: "", originalName: f.originalName, originalType: f.originalType, sizeBytes: f.sizeBytes, status: f.status, qualityScore: f.qualityScore, wordCount: f.wordCount, language: f.language, isShared: false, sharedWith: [], permission: "owner", createdAt: f.createdAt, updatedAt: f.updatedAt, })), folders: folders.map((f) => ({ id: f.id, name: f.name, parentId: f.parentId, ownerId: f.ownerId, ownerEmail: "", fileCount: 0, createdAt: f.createdAt, updatedAt: f.updatedAt, })), }); } catch (err) { req.log?.error({ err }, "list user trash error"); res.status(500).json({ error: "server_error", message: "فشل جلب سلة المهملات" }); } }); // DELETE /api/trash/empty — permanently delete all current user's trashed items router.delete("/empty", async (req: AuthRequest, res) => { try { const userId = req.userId!; await db.delete(filesTable).where(and(eq(filesTable.ownerId, userId), eq(filesTable.status, "trashed"))); await db.delete(foldersTable).where(and(eq(foldersTable.ownerId, userId), eq(foldersTable.trashed, true))); res.json({ message: "تم إفراغ سلة المهملات" }); } catch (err) { req.log?.error({ err }, "empty user trash error"); res.status(500).json({ error: "server_error", message: "فشل إفراغ السلة" }); } }); export default router;