From ec9d02a7353e0b02077cf206a09ec7cc7f4f14f6 Mon Sep 17 00:00:00 2001 From: miloschwartz Date: Mon, 24 Feb 2025 22:46:55 -0500 Subject: [PATCH] clear stale data from db on restart --- server/setup/clearStaleData.ts | 79 ++++++++++++++++++++++++++++++++++ server/setup/index.ts | 2 + 2 files changed, 81 insertions(+) create mode 100644 server/setup/clearStaleData.ts diff --git a/server/setup/clearStaleData.ts b/server/setup/clearStaleData.ts new file mode 100644 index 0000000..1378919 --- /dev/null +++ b/server/setup/clearStaleData.ts @@ -0,0 +1,79 @@ +import { db } from "@server/db"; +import { + emailVerificationCodes, + newtSessions, + passwordResetTokens, + resourceAccessToken, + resourceOtp, + resourceSessions, + sessions, + userInvites +} from "@server/db/schema"; +import logger from "@server/logger"; +import { lt } from "drizzle-orm"; + +export async function clearStaleData() { + try { + await db + .delete(sessions) + .where(lt(sessions.expiresAt, new Date().getTime())); + } catch (e) { + logger.error("Error clearing expired sessions:", e); + } + + try { + await db + .delete(newtSessions) + .where(lt(newtSessions.expiresAt, new Date().getTime())); + } catch (e) { + logger.error("Error clearing expired newtSessions:", e); + } + + try { + await db + .delete(emailVerificationCodes) + .where(lt(emailVerificationCodes.expiresAt, new Date().getTime())); + } catch (e) { + logger.error("Error clearing expired emailVerificationCodes:", e); + } + + try { + await db + .delete(passwordResetTokens) + .where(lt(passwordResetTokens.expiresAt, new Date().getTime())); + } catch (e) { + logger.error("Error clearing expired passwordResetTokens:", e); + } + + try { + await db + .delete(userInvites) + .where(lt(userInvites.expiresAt, new Date().getTime())); + } catch (e) { + logger.error("Error clearing expired userInvites:", e); + } + + try { + await db + .delete(resourceAccessToken) + .where(lt(resourceAccessToken.expiresAt, new Date().getTime())); + } catch (e) { + logger.error("Error clearing expired resourceAccessToken:", e); + } + + try { + await db + .delete(resourceSessions) + .where(lt(resourceSessions.expiresAt, new Date().getTime())); + } catch (e) { + logger.error("Error clearing expired resourceSessions:", e); + } + + try { + await db + .delete(resourceOtp) + .where(lt(resourceOtp.expiresAt, new Date().getTime())); + } catch (e) { + logger.error("Error clearing expired resourceOtp:", e); + } +} diff --git a/server/setup/index.ts b/server/setup/index.ts index 51d8728..b93af2a 100644 --- a/server/setup/index.ts +++ b/server/setup/index.ts @@ -2,12 +2,14 @@ import { ensureActions } from "./ensureActions"; import { copyInConfig } from "./copyInConfig"; import { setupServerAdmin } from "./setupServerAdmin"; import logger from "@server/logger"; +import { clearStaleData } from "./clearStaleData"; export async function runSetupFunctions() { try { await copyInConfig(); // copy in the config to the db as needed await setupServerAdmin(); await ensureActions(); // make sure all of the actions are in the db and the roles + await clearStaleData(); } catch (error) { logger.error("Error running setup functions:", error); process.exit(1);