MCPcopy Create free account
hub / github.com/Openpanel-dev/openpanel / createSaltsWithRetry

Function createSaltsWithRetry

packages/db/src/services/salt.service.ts:33–63  ·  view source on GitHub ↗
(retryCount = 0)

Source from the content-addressed store, hash-verified

31 const MAX_RETRIES = 5;
32 const BASE_DELAY = 1000; // 1 second
33 const createSaltsWithRetry = async (retryCount = 0): Promise<void> => {
34 try {
35 await getSalts();
36 } catch (error) {
37 if (error instanceof Error && error.message === 'No salt found') {
38 console.log('Creating salts for the first time');
39 await db.salt.create({
40 data: {
41 salt: generateSalt(),
42 createdAt: new Date(new Date().getTime() - 1000 * 60 * 60 * 24),
43 },
44 });
45 await db.salt.create({
46 data: {
47 salt: generateSalt(),
48 },
49 });
50 } else {
51 console.log('Error getting salts', error);
52 if (retryCount < MAX_RETRIES) {
53 const delay = BASE_DELAY * 2 ** retryCount;
54 console.log(
55 `Retrying in ${delay}ms... (Attempt ${retryCount + 1}/${MAX_RETRIES})`,
56 );
57 await new Promise((resolve) => setTimeout(resolve, delay));
58 return createSaltsWithRetry(retryCount + 1);
59 }
60 throw new Error(`Failed to create salts after ${MAX_RETRIES} attempts`);
61 }
62 }
63 };
64
65 await createSaltsWithRetry();
66}

Callers 1

createInitialSaltsFunction · 0.85

Calls 2

generateSaltFunction · 0.90
logMethod · 0.45

Tested by

no test coverage detected