aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMohamedBassem <me@mbassem.com>2024-04-05 23:57:57 +0100
committerMohamedBassem <me@mbassem.com>2024-04-05 23:57:57 +0100
commit91b088db868eecc0d048e52a3529846ae4d5c580 (patch)
treea0443f5a1cb3fccf924e48b1f480d06c612fae44
parent8af95fef8874a0c1d1ebbe407483f7475b4a9cd2 (diff)
downloadkarakeep-91b088db868eecc0d048e52a3529846ae4d5c580.tar.zst
fix: Delete user's assets when the user is deleted
-rw-r--r--packages/shared/assetdb.ts12
-rw-r--r--packages/trpc/routers/users.ts2
2 files changed, 14 insertions, 0 deletions
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(