docs(frontend): note N+1 gateway skills fetch
This commit is contained in:
@@ -137,22 +137,26 @@ export default function SkillsMarketplacePage() {
|
|||||||
});
|
});
|
||||||
}, [selectedPack, skills]);
|
}, [selectedPack, skills]);
|
||||||
|
|
||||||
const loadSkillsByGateway = useCallback(
|
const loadSkillsByGateway = useCallback(async () => {
|
||||||
async () =>
|
// NOTE: This is technically N+1 (one request per gateway). We intentionally
|
||||||
Promise.all(
|
// parallelize requests to keep the UI responsive and avoid slow sequential
|
||||||
gateways.map(async (gateway) => {
|
// fetches. If this becomes a bottleneck for large gateway counts, add a
|
||||||
const response = await listMarketplaceSkillsApiV1SkillsMarketplaceGet({
|
// backend batch endpoint to return installation state across all gateways.
|
||||||
gateway_id: gateway.id,
|
const gatewaySkills = await Promise.all(
|
||||||
});
|
gateways.map(async (gateway) => {
|
||||||
return {
|
const response = await listMarketplaceSkillsApiV1SkillsMarketplaceGet({
|
||||||
gatewayId: gateway.id,
|
gateway_id: gateway.id,
|
||||||
gatewayName: gateway.name,
|
});
|
||||||
skills: response.status === 200 ? response.data : [],
|
return {
|
||||||
};
|
gatewayId: gateway.id,
|
||||||
}),
|
gatewayName: gateway.name,
|
||||||
),
|
skills: response.status === 200 ? response.data : [],
|
||||||
[gateways],
|
};
|
||||||
);
|
}),
|
||||||
|
);
|
||||||
|
|
||||||
|
return gatewaySkills;
|
||||||
|
}, [gateways]);
|
||||||
|
|
||||||
const updateInstalledGatewayNames = useCallback(
|
const updateInstalledGatewayNames = useCallback(
|
||||||
({
|
({
|
||||||
|
|||||||
Reference in New Issue
Block a user