Skip to content

Commit 0d1b1fb

Browse files
authored
Merge pull request #328 from MarcoMandar/main
Save Trade on creation to the backend
2 parents 4fdd584 + e2a3f62 commit 0d1b1fb

File tree

1 file changed

+49
-0
lines changed

1 file changed

+49
-0
lines changed

packages/plugin-solana/src/providers/trustScoreProvider.ts

+49
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,8 @@ export class TrustScoreManager {
6161
private baseMint: PublicKey = new PublicKey(settings.BASE_MINT!);
6262
private DECAY_RATE = 0.95;
6363
private MAX_DECAY_DAYS = 30;
64+
private backend = settings.BACKEND_URL; // TODO add to .env
65+
private backendToken = settings.BACKEND_TOKEN; // TODO add to .env
6466
constructor(
6567
tokenProvider: TokenProvider,
6668
trustScoreDb: TrustScoreDatabase
@@ -378,9 +380,56 @@ export class TrustScoreManager {
378380
rapidDump: false,
379381
};
380382
this.trustScoreDb.addTradePerformance(creationData, data.is_simulation);
383+
// api call to update trade performance
384+
this.createTradeInBe(tokenAddress, recommenderId, data);
381385
return creationData;
382386
}
383387

388+
async delay(ms: number) {
389+
return new Promise((resolve) => setTimeout(resolve, ms));
390+
}
391+
392+
async createTradeInBe(
393+
tokenAddress: string,
394+
recommenderId: string,
395+
data: TradeData,
396+
retries = 3,
397+
delayMs = 2000
398+
) {
399+
for (let attempt = 1; attempt <= retries; attempt++) {
400+
try {
401+
await fetch(
402+
`${this.backend}/api/updaters/createTradePerformance`,
403+
{
404+
method: "POST",
405+
headers: {
406+
"Content-Type": "application/json",
407+
Authorization: `Bearer ${this.backendToken}`,
408+
},
409+
body: JSON.stringify({
410+
tokenAddress: tokenAddress,
411+
tradeData: data,
412+
recommenderId: recommenderId,
413+
}),
414+
}
415+
);
416+
// If the request is successful, exit the loop
417+
return;
418+
} catch (error) {
419+
console.error(
420+
`Attempt ${attempt} failed: Error creating trade in backend`,
421+
error
422+
);
423+
if (attempt < retries) {
424+
console.log(`Retrying in ${delayMs} ms...`);
425+
await this.delay(delayMs); // Wait for the specified delay before retrying
426+
} else {
427+
console.error("All attempts failed.");
428+
}
429+
}
430+
}
431+
}
432+
384433
/**
385434
* Updates a trade with sell details.
386435
* @param tokenAddress The address of the token.

0 commit comments

Comments
 (0)