/** * admin.orgs.delete - Delete organization and all related records */ import { ORPCError } from "@orpc/server"; import { superuserProcedure } from "../../base.js"; export const adminOrgsDelete = superuserProcedure.admin.orgs.delete.handler( async ({ input, context }) => { const { slug } = input; // Delete org and related records in transaction await context.db.transaction().execute(async (trx) => { const org = await trx .selectFrom("orgs") .where("slug", "=", slug) .select(["id"]) .executeTakeFirst(); if (!org) { throw new ORPCError("NOT_FOUND", { message: "Organization not found" }); } await trx .deleteFrom("org_invites") .where("org_id", "=", org.id) .execute(); await trx.deleteFrom("org_sites").where("org_id", "=", org.id).execute(); await trx .deleteFrom("org_members") .where("org_id", "=", org.id) .execute(); await trx.deleteFrom("orgs").where("id", "=", org.id).execute(); }); return { success: true }; }, );