RAQIM Deploy
Deploy RAQIM 2026-05-02 23:08
3e9069b
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;