From 91b088db868eecc0d048e52a3529846ae4d5c580 Mon Sep 17 00:00:00 2001 From: MohamedBassem Date: Fri, 5 Apr 2024 23:57:57 +0100 Subject: fix: Delete user's assets when the user is deleted --- packages/shared/assetdb.ts | 12 ++++++++++++ packages/trpc/routers/users.ts | 2 ++ 2 files changed, 14 insertions(+) (limited to 'packages') diff --git a/packages/shared/assetdb.ts b/packages/shared/assetdb.ts index 8fd4da16..2973673f 100644 --- a/packages/shared/assetdb.ts +++ b/packages/shared/assetdb.ts @@ -67,3 +67,15 @@ export async function deleteAsset({ const assetDir = getAssetDir(userId, assetId); await fs.promises.rm(path.join(assetDir), { recursive: true }); } + +export async function deleteUserAssets({ userId }: { userId: string }) { + const userDir = path.join(ROOT_PATH, userId); + const dirExists = await fs.promises + .access(userDir) + .then(() => true) + .catch(() => false); + if (!dirExists) { + return; + } + await fs.promises.rm(userDir, { recursive: true }); +} diff --git a/packages/trpc/routers/users.ts b/packages/trpc/routers/users.ts index 1e7a83a6..e7f0a59d 100644 --- a/packages/trpc/routers/users.ts +++ b/packages/trpc/routers/users.ts @@ -5,6 +5,7 @@ import { z } from "zod"; import { SqliteError } from "@hoarder/db"; import { users } from "@hoarder/db/schema"; +import { deleteUserAssets } from "@hoarder/shared/assetdb"; import serverConfig from "@hoarder/shared/config"; import { hashPassword, validatePassword } from "../auth"; @@ -127,6 +128,7 @@ export const usersAppRouter = router({ if (res.changes == 0) { throw new TRPCError({ code: "NOT_FOUND" }); } + await deleteUserAssets({ userId: input.userId }); }), whoami: authedProcedure .output( -- cgit v1.2.3-70-g09d2