upd: cache instance sponsors

This commit is contained in:
Marie 2024-10-02 18:27:11 +02:00
parent cc1017b2af
commit dcd6eee627
No known key found for this signature in database
GPG key ID: 7ADF6C9CD9A28555

View file

@ -35,9 +35,12 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
super(meta, paramDef, async (ps, me) => {
let totalSponsors;
const cachedSponsors = await this.redisClient.get('sponsors');
const cachedInstanceSponsors = await this.redisClient.get('instanceSponsors');
if (!ps.forceUpdate && !ps.instance && cachedSponsors) {
totalSponsors = JSON.parse(cachedSponsors);
} else if (ps.instance && !ps.forceUpdate && cachedInstanceSponsors) {
totalSponsors = JSON.parse(cachedInstanceSponsors);
} else if (!ps.instance) {
try {
const backers = await fetch('https://opencollective.com/sharkey/tiers/backer/all.json').then((response) => response.json());
@ -66,6 +69,8 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
// Remove possible duplicates
totalSponsors = [...new Map(allSponsors.map(v => [v.profile, v])).values()];
await this.redisClient.set('instanceSponsors', JSON.stringify(totalSponsors), 'EX', 3600);
} else {
totalSponsors = [];
}