mirror of
https://github.com/kmc7468/arkvault.git
synced 2025-12-16 23:18:48 +00:00
/api/file/[id]/delete, /api/file/[id]/rename, /api/directory/[id]/delete, /api/directory/[id]/rename Endpoint 구현
This commit is contained in:
@@ -5,48 +5,27 @@ import { mkdir, stat, unlink } from "fs/promises";
|
||||
import { dirname } from "path";
|
||||
import { v4 as uuidv4 } from "uuid";
|
||||
import {
|
||||
getAllDirectoriesByParent,
|
||||
registerNewDirectory,
|
||||
getDirectory,
|
||||
registerNewFile,
|
||||
getAllFilesByParent,
|
||||
getFile,
|
||||
type NewDirectroyParams,
|
||||
setFileEncName,
|
||||
unregisterFile,
|
||||
type NewFileParams,
|
||||
} from "$lib/server/db/file";
|
||||
import { getActiveMekVersion } from "$lib/server/db/mek";
|
||||
import env from "$lib/server/loadenv";
|
||||
|
||||
export const getDirectroyInformation = async (userId: number, directroyId: "root" | number) => {
|
||||
const directory = directroyId !== "root" ? await getDirectory(userId, directroyId) : undefined;
|
||||
if (directory === null) {
|
||||
error(404, "Invalid directory id");
|
||||
export const deleteFile = async (userId: number, fileId: number) => {
|
||||
const file = await getFile(userId, fileId);
|
||||
if (!file) {
|
||||
error(404, "Invalid file id");
|
||||
}
|
||||
|
||||
const directories = await getAllDirectoriesByParent(userId, directroyId);
|
||||
const files = await getAllFilesByParent(userId, directroyId);
|
||||
|
||||
return {
|
||||
metadata: directory && {
|
||||
createdAt: directory.createdAt,
|
||||
mekVersion: directory.mekVersion,
|
||||
encDek: directory.encDek,
|
||||
encName: directory.encName,
|
||||
},
|
||||
directories: directories.map(({ id }) => id),
|
||||
files: files.map(({ id }) => id),
|
||||
};
|
||||
};
|
||||
|
||||
export const createDirectory = async (params: NewDirectroyParams) => {
|
||||
const activeMekVersion = await getActiveMekVersion(params.userId);
|
||||
if (activeMekVersion === null) {
|
||||
error(500, "Invalid MEK version");
|
||||
} else if (activeMekVersion !== params.mekVersion) {
|
||||
error(400, "Invalid MEK version");
|
||||
const path = await unregisterFile(userId, fileId);
|
||||
if (!path) {
|
||||
error(500, "Invalid file id");
|
||||
}
|
||||
|
||||
await registerNewDirectory(params);
|
||||
unlink(path); // Intended
|
||||
};
|
||||
|
||||
const convertToReadableStream = (readStream: ReadStream) => {
|
||||
@@ -75,6 +54,20 @@ export const getFileStream = async (userId: number, fileId: number) => {
|
||||
};
|
||||
};
|
||||
|
||||
export const renameFile = async (
|
||||
userId: number,
|
||||
fileId: number,
|
||||
newEncName: string,
|
||||
newEncNameIv: string,
|
||||
) => {
|
||||
const file = await getFile(userId, fileId);
|
||||
if (!file) {
|
||||
error(404, "Invalid file id");
|
||||
}
|
||||
|
||||
await setFileEncName(userId, fileId, newEncName, newEncNameIv);
|
||||
};
|
||||
|
||||
export const getFileInformation = async (userId: number, fileId: number) => {
|
||||
const file = await getFile(userId, fileId);
|
||||
if (!file) {
|
||||
|
||||
Reference in New Issue
Block a user