Fix edge case for many secrets on replicate folders update function

This commit is contained in:
carlosmonastyrski
2025-04-01 09:17:57 -03:00
parent 6128301622
commit 4b0e0d4de5
@@ -371,18 +371,32 @@ export const ActionBar = ({
if (secretFolderKeys.length === 0) return; if (secretFolderKeys.length === 0) return;
// Check which secrets already exist in this path // Check which secrets already exist in this path
const { secrets: existingSecrets } = await fetchDashboardProjectSecretsByKeys({ const batchSize = 50;
const secretBatches = Array.from(
{ length: Math.ceil(secretFolderKeys.length / batchSize) },
(_, i) => secretFolderKeys.slice(i * batchSize, (i + 1) * batchSize)
);
const existingSecretLookup: Record<string, boolean> = {};
const processBatches = async () => {
await secretBatches.reduce(async (previous, batch) => {
await previous;
const { secrets: batchSecrets } = await fetchDashboardProjectSecretsByKeys({
secretPath: normalizedPath, secretPath: normalizedPath,
environment, environment,
projectId: workspaceId, projectId: workspaceId,
keys: secretFolderKeys keys: batch
}); });
// Create a quick lookup for existing secrets batchSecrets.forEach((secret) => {
const existingSecretLookup = existingSecrets.reduce<Record<string, boolean>>( existingSecretLookup[secret.secretKey] = true;
(lookup, secret) => ({ ...lookup, [secret.secretKey]: true }), });
{} }, Promise.resolve());
); };
await processBatches();
// Categorize each secret as update or create // Categorize each secret as update or create
secretFolderKeys.forEach((secretKey) => { secretFolderKeys.forEach((secretKey) => {