1- import { Injectable } from '@nestjs/common' ;
1+ import { Inject , Injectable } from '@nestjs/common' ;
22import { FivemService } from 'src/fivem/fivem.service' ;
33import { MinecraftService } from 'src/minecraft/minecraft.service' ;
44import { SourceService } from 'src/source/source.service' ;
55import LametricFrameDto from './dto/lametricFrameDto' ;
66import LametricServerCheckedDto from './dto/lametricServerCheckedDto' ;
7- import { LametricIconServer , LametricServerTypeParams } from 'src/utils/enums' ;
7+ import {
8+ CacheKeys ,
9+ LametricIconServer ,
10+ LametricServerTypeParams ,
11+ } from 'src/utils/enums' ;
812import LametricFrameTextDto from './dto/lametricFrameTextDto' ;
13+ import { Cache , CACHE_MANAGER } from '@nestjs/cache-manager' ;
914
1015@Injectable ( )
1116export class LametricService {
1217 constructor (
18+ @Inject ( CACHE_MANAGER ) private cacheManager : Cache ,
1319 private readonly minecraftService : MinecraftService ,
1420 private readonly sourceService : SourceService ,
1521 private readonly fivemService : FivemService ,
@@ -30,6 +36,16 @@ export class LametricService {
3036 this . fivemService . trackServerByCfx ( { code : code } ) ,
3137 } ;
3238
39+ readonly cacheDict : {
40+ [ id in LametricServerTypeParams ] : string ;
41+ } = {
42+ Minecraft : CacheKeys . Minecraft ,
43+ MinecraftBedrock : CacheKeys . MinecraftBedrock ,
44+ Source : CacheKeys . Source ,
45+ FiveM : CacheKeys . FiveM ,
46+ FiveMCfxCode : CacheKeys . FiveMCfxCode ,
47+ } ;
48+
3349 readonly serverIconDict : {
3450 [ serverType in LametricServerTypeParams ] : LametricIconServer ;
3551 } = {
@@ -44,13 +60,24 @@ export class LametricService {
4460 serverChecked : LametricServerCheckedDto ,
4561 ) : Promise < LametricFrameDto > {
4662 const icon : LametricIconServer = this . serverIconDict [ serverChecked . type ] ;
63+ const cache : any = await this . cacheManager . get (
64+ `${ this . cacheDict [ serverChecked . type ] } :${ serverChecked . address } ` ,
65+ ) ;
4766 const frame : LametricFrameDto = {
4867 frames : [ new LametricFrameTextDto ( serverChecked . name , icon ) ] ,
4968 } ;
69+ let result : any ;
5070
51- let result = await this . actionDict [ serverChecked . type ] (
52- serverChecked . address ,
53- ) ;
71+ if ( cache ) {
72+ result = cache ;
73+ } else {
74+ result = await this . actionDict [ serverChecked . type ] ( serverChecked . address ) ;
75+ this . cacheManager . set (
76+ `${ this . cacheDict [ serverChecked . type ] } :${ serverChecked . address } ` ,
77+ result ,
78+ 5 * 60 * 1000 ,
79+ ) ;
80+ }
5481 if ( ! result . online ) {
5582 frame . frames . push ( new LametricFrameTextDto ( 'OFFLINE' , icon ) ) ;
5683 return frame ;
0 commit comments