fosrl.pangolin/server/db/ensureActions.ts

38 lines
1.1 KiB
TypeScript
Raw Normal View History

2024-10-06 18:12:27 -04:00
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();
}
}
}