Files
myDrive/backend/controllers/folder.ts
T
2024-08-04 03:51:56 -04:00

292 lines
6.8 KiB
TypeScript

import FolderService from "../services/FolderService";
import { Request, Response } from "express";
import ChunkService from "../services/ChunkService";
const folderService = new FolderService();
type userAccessType = {
_id: string;
emailVerified: boolean;
email: string;
s3Enabled: boolean;
};
interface RequestType extends Request {
user?: userAccessType;
encryptedToken?: string;
}
const chunkService = new ChunkService();
class FolderController {
constructor() {}
createFolder = async (req: RequestType, res: Response) => {
if (!req.user) {
return;
}
try {
const userID = req.user._id;
const name = req.body.name;
const parent = req.body.parent;
const folder = await folderService.createFolder(userID, name, parent);
res.send(folder);
} catch (e: unknown) {
if (e instanceof Error) {
console.log("\nUpload Folder Error Folder Route:", e.message);
}
res.status(500).send("Server error creating folder");
}
};
deleteFolder = async (req: RequestType, res: Response) => {
if (!req.user) {
return;
}
try {
const userID = req.user._id;
const folderID = req.body.id;
const parentList = req.body.parentList;
await chunkService.deleteFolder(userID, folderID);
res.send();
} catch (e: unknown) {
if (e instanceof Error) {
console.log("\nDelete Folder Error Folder Route:", e.message);
}
res.status(500).send("Server error deleting folder");
}
};
getSubfolderFullList = async (req: RequestType, res: Response) => {
if (!req.user) {
return;
}
try {
const user = req.user;
const id: any = req.query.id;
const subfolderList = await folderService.getSubfolderFullList(user, id);
res.send(subfolderList);
} catch (e: unknown) {
if (e instanceof Error) {
console.log("\nGet Subfolder List Error Folder Route:", e.message);
}
res.status(500).send("Server error getting subfolder full list");
}
};
deleteAll = async (req: RequestType, res: Response) => {
if (!req.user) {
return;
}
try {
const userID = req.user._id;
await chunkService.deleteAll(userID);
res.send();
} catch (e: unknown) {
if (e instanceof Error) {
console.log("\nDelete All Error Folder Route:", e.message);
}
res.status(500).send("Server error deleting all");
}
};
getInfo = async (req: RequestType, res: Response) => {
if (!req.user) {
return;
}
try {
const userID = req.user._id;
const folderID = req.params.id;
const folder = await folderService.getFolderInfo(userID, folderID);
res.send(folder);
} catch (e: unknown) {
if (e instanceof Error) {
console.log("\nGet Info Error Folder Route:", e.message);
}
res.status(500).send("Server error getting user info");
}
};
getSubfolderList = async (req: RequestType, res: Response) => {
if (!req.user) {
return;
}
try {
const userID = req.user._id;
const folderID = req.query.id as string;
const { folderIDList, folderNameList } =
await folderService.getFolderSublist(userID, folderID);
res.send({ folderIDList, folderNameList });
} catch (e: unknown) {
if (e instanceof Error) {
console.log("\nServer error getting subfolder list", e.message);
}
res.status(500).send("");
}
};
getFolderList = async (req: RequestType, res: Response) => {
if (!req.user) {
return;
}
try {
const user = req.user;
const query = req.query;
const folderList = await folderService.getFolderList(user, query);
res.send(folderList);
} catch (e: unknown) {
if (e instanceof Error) {
console.log("\nGet Folder List Error Folder Route:", e.message);
}
res.status(500).send("Server error getting folder list");
}
};
moveFolder = async (req: RequestType, res: Response) => {
if (!req.user) {
return;
}
try {
const userID = req.user._id;
const folderID = req.body.id;
const parent = req.body.parent;
await folderService.moveFolder(userID, folderID, parent);
res.send();
} catch (e: unknown) {
if (e instanceof Error) {
console.log("\nMove Folder Error Folder Route:", e.message);
}
res.status(500).send("Server error moving folder");
}
};
trashFolder = async (req: RequestType, res: Response) => {
if (!req.user) {
return;
}
try {
const userID = req.user._id;
const folderID = req.body.id;
await folderService.trashFolder(userID, folderID);
res.send();
} catch (e: unknown) {
if (e instanceof Error) {
console.log("\nTrash Folder Error Folder Route:", e.message);
}
res.status(500).send("Server error trashing folder");
}
};
restoreFolder = async (req: RequestType, res: Response) => {
if (!req.user) {
return;
}
try {
const userID = req.user._id;
const folderID = req.body.id;
await folderService.restoreFolder(userID, folderID);
res.send();
} catch (e: unknown) {
if (e instanceof Error) {
console.log("Restore Folder Error Folder Route:", e.message);
}
res.status(500).send("Server error restore folder");
}
};
renameFolder = async (req: RequestType, res: Response) => {
if (!req.user) {
return;
}
try {
const userID = req.user._id;
const folderID = req.body.id;
const title = req.body.title;
await folderService.renameFolder(userID, folderID, title);
res.send();
} catch (e: unknown) {
if (e instanceof Error) {
console.log("\nRename Folder Error Folder Route:", e.message);
}
res.status(500).send("Server error renaming folder");
}
};
getMoveFolderList = async (req: RequestType, res: Response) => {
if (!req.user) {
return;
}
try {
const userID = req.user._id;
const parent = (req.query.parent as string) || undefined;
const search = (req.query.search as string) || undefined;
const folderID = (req.query.folderID as string) || undefined;
const currentParent = (req.query.currentParent as string) || undefined;
console.log("folderID", folderID);
const folderList = await folderService.getMoveFolderList(
userID,
parent,
search,
folderID,
currentParent
);
res.send(folderList);
} catch (e: unknown) {
if (e instanceof Error) {
console.log("\nGet Move Folder List Error Folder Route:", e.message);
}
res.status(500).send("Server error getting move folder list");
}
};
}
export default FolderController;