perf: requireAdmin — 2 queries → 1 (User + userRoles eager join TypeORM)

This commit is contained in:
2026-03-15 18:00:48 +01:00
parent 379a9a115b
commit e52aa1e79c

View File

@@ -1,7 +1,6 @@
import { Response, NextFunction } from "express";
import { AppDataSource } from "../config/data-source";
import { User } from "../entities/User";
import { UserRole } from "../entities/UserRole";
import { AuthenticatedRequest } from "./auth.middleware";
import logger from "../utils/logger";
@@ -19,6 +18,7 @@ export const requireAdmin = async (
try {
const localUser = await AppDataSource.getRepository(User).findOne({
where: { superOAuthId: req.user.id },
relations: { userRoles: { role: true } },
});
if (!localUser) {
@@ -26,12 +26,7 @@ export const requireAdmin = async (
return;
}
const userRoles = await AppDataSource.getRepository(UserRole).find({
where: { userId: localUser.id },
relations: ["role"],
});
const slugs = userRoles.map((ur) => ur.role.slug);
const slugs = localUser.userRoles.map((ur) => ur.role.slug);
const isAdmin = slugs.includes("admin") || slugs.includes("super_admin");
if (!isAdmin) {