Spaces:
Sleeping
Sleeping
| 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; | |