import { Role } from "@/types/api";

const SUPER_ADMIN_FAMILY = new Set<Role>([Role.SUPER_ADMIN, Role.DB_ADMIN]);

export const hasSuperAdminAccess = (role?: string | Role | null): boolean => {
	if (!role) return false;
	return SUPER_ADMIN_FAMILY.has(role as Role);
};

export const isAccountAdmin = (role?: string | Role | null): boolean => {
	return String(role || "") === Role.ACCOUNT_ADMIN;
};

export const normalizeRoleForAccess = (role?: string | Role | null): Role | null => {
	if (!role) return null;
	if (hasSuperAdminAccess(role)) {
		return Role.SUPER_ADMIN;
	}

	const values = Object.values(Role) as string[];
	if (values.includes(String(role))) {
		return role as Role;
	}

	return null;
};

export const canAccessDbEditor = (role?: string | Role | null): boolean => {
	return String(role || "") === Role.DB_ADMIN;
};
