@@ -42,11 +42,11 @@ function getApiUrl(tag: string) {
4242}
4343*/
4444
45- const BRAWLIFY_CACHE_MINUTES = 60 * 24
46-
4745export default class BrawlstarsService {
4846 private readonly clicker ?: ClickerService ;
49- private brawlifyCache = new Cache < string , Record < number , string > > ( BRAWLIFY_CACHE_MINUTES )
47+ // TODO move caches to mariadb
48+ private brawlifyBrawlersCache = new Cache < string , Record < number , string > > ( 60 * 24 )
49+ private brawlifyEventsCache = new Cache < string , { current : ActiveEvent [ ] , upcoming : ActiveEvent [ ] } > ( 10 )
5050
5151 constructor ( ) {
5252 if ( clickhouseUrl != undefined ) {
@@ -65,27 +65,30 @@ export default class BrawlstarsService {
6565 }
6666
6767 // TODO official API does not show all future events as of 2022-01-07
68- public async getActiveEvents ( ) {
69- const response = await request < { active : StarlistEvent [ ] , upcoming : StarlistEvent [ ] } > (
70- 'events' ,
71- brawlapiUrl ,
72- 'fetch_events' ,
73- { } ,
74- { 'Authorization' : 'Bearer ' + brawlapiToken } ,
75- 1000 ,
76- ) ;
68+ public async getActiveEvents ( ) : Promise < { current : ActiveEvent [ ] , upcoming : ActiveEvent [ ] } > {
69+ return this . brawlifyEventsCache . getOrUpdate ( 'events' , async ( ) => {
70+ const response = await request < { active : StarlistEvent [ ] , upcoming : StarlistEvent [ ] } > (
71+ 'events' ,
72+ brawlapiUrl ,
73+ 'fetch_events' ,
74+ { } ,
75+ { 'Authorization' : 'Bearer ' + brawlapiToken } ,
76+ 1000 ,
77+ ) ;
7778
78- const mapper = ( events : StarlistEvent [ ] ) => events . map ( ( event ) => ( {
79- id : event . map . id . toString ( ) ,
80- map : event . map . name ,
81- mode : unformatMode ( event . map . gameMode . name ) ,
82- start : event . startTime ,
83- end : event . endTime ,
84- } ) as ActiveEvent ) ;
85- return {
86- current : mapper ( response . active ) ,
87- upcoming : mapper ( response . upcoming ) ,
88- }
79+ const mapper = ( events : StarlistEvent [ ] ) => events . map ( ( event ) => ( {
80+ id : event . map . id . toString ( ) ,
81+ map : event . map . name ,
82+ mode : unformatMode ( event . map . gameMode . name ) ,
83+ start : event . startTime ,
84+ end : event . endTime ,
85+ } ) satisfies ActiveEvent ) ;
86+
87+ return {
88+ current : mapper ( response . active ) ,
89+ upcoming : mapper ( response . upcoming ) ,
90+ }
91+ } )
8992 }
9093
9194 public async getPlayerRanking ( countryCode : string ) {
@@ -150,9 +153,7 @@ export default class BrawlstarsService {
150153 }
151154
152155 private async getBrawlerMeta ( ) : Promise < Record < number , string > > {
153- // TODO move caches to mariadb
154-
155- return this . brawlifyCache . getOrUpdate ( 'brawlers' , async ( ) => {
156+ return this . brawlifyBrawlersCache . getOrUpdate ( 'brawlers' , async ( ) => {
156157 const response = await request < { list : StarlistBrawler [ ] } > (
157158 'brawlers' ,
158159 brawlapiUrl ,
0 commit comments