diff --git a/server/db/ensureActions.ts b/server/db/ensureActions.ts new file mode 100644 index 00000000..0ed233bd --- /dev/null +++ b/server/db/ensureActions.ts @@ -0,0 +1,38 @@ +import { ActionsEnum } from "@server/auth/actions"; +import { db } from "@server/db"; +import { actions } from "./schema"; +import { eq } from "drizzle-orm"; + +// Ensure actions are in the database +export async function ensureActions() { + const actionIds = Object.values(ActionsEnum); + for (const actionId of actionIds) { + const existing = await db + .select() + .from(actions) + .where(eq(actions.name, actionId)) + .execute(); + if (existing.length === 0) { + await db + .insert(actions) + .values({ + actionId + }) + .execute(); + } + } + + // make sure all actions are in the database + const existingActions = await db + .select() + .from(actions) + .execute(); + for (const action of existingActions) { + if (!actionIds.includes(action.actionId as ActionsEnum)) { + await db + .delete(actions) + .where(eq(actions.actionId, action.actionId)) + .execute(); + } + } +} \ No newline at end of file diff --git a/server/db/schema.ts b/server/db/schema.ts index 3e627ce8..440832ff 100644 --- a/server/db/schema.ts +++ b/server/db/schema.ts @@ -131,7 +131,7 @@ export const passwordResetTokens = sqliteTable("passwordResetTokens", { export const actions = sqliteTable("actions", { actionId: text("actionId").primaryKey(), - name: text("name").notNull(), + name: text("name"), description: text("description"), }); diff --git a/server/index.ts b/server/index.ts index 30ca673c..a2616fc4 100644 --- a/server/index.ts +++ b/server/index.ts @@ -24,6 +24,9 @@ const externalPort = environment.EXTERNAL_PORT; const internalPort = environment.INTERNAL_PORT; app.prepare().then(() => { + + + // External server const externalServer = express();