Removed ProfileSnapshotService

Added `InMemoryCacheService`
This commit is contained in:
Dev 2024-10-01 11:21:32 +01:00
parent 6301411a86
commit 73ecbe7d2c
3 changed files with 54 additions and 55 deletions

View File

@ -209,6 +209,7 @@ import { CustomLocationWaveService } from "@spt/services/CustomLocationWaveServi
import { DatabaseService } from "@spt/services/DatabaseService";
import { FenceService } from "@spt/services/FenceService";
import { GiftService } from "@spt/services/GiftService";
import { InMemoryCacheService } from "@spt/services/InMemoryCacheService";
import { InsuranceService } from "@spt/services/InsuranceService";
import { ItemBaseClassService } from "@spt/services/ItemBaseClassService";
import { ItemFilterService } from "@spt/services/ItemFilterService";
@ -227,7 +228,6 @@ import { PlayerService } from "@spt/services/PlayerService";
import { PmcChatResponseService } from "@spt/services/PmcChatResponseService";
import { ProfileActivityService } from "@spt/services/ProfileActivityService";
import { ProfileFixerService } from "@spt/services/ProfileFixerService";
import { ProfileSnapshotService } from "@spt/services/ProfileSnapshotService";
import { RagfairCategoriesService } from "@spt/services/RagfairCategoriesService";
import { RagfairLinkedItemService } from "@spt/services/RagfairLinkedItemService";
import { RagfairOfferService } from "@spt/services/RagfairOfferService";
@ -744,7 +744,7 @@ export class Container {
});
depContainer.register<CustomItemService>("CustomItemService", CustomItemService);
depContainer.register<BotEquipmentFilterService>("BotEquipmentFilterService", BotEquipmentFilterService);
depContainer.register<ProfileSnapshotService>("ProfileSnapshotService", ProfileSnapshotService, {
depContainer.register<InMemoryCacheService>("InMemoryCacheService", InMemoryCacheService, {
lifecycle: Lifecycle.Singleton,
});
depContainer.register<ItemFilterService>("ItemFilterService", ItemFilterService, {

View File

@ -0,0 +1,52 @@
import { ICloner } from "@spt/utils/cloners/ICloner";
import { inject, injectable } from "tsyringe";
@injectable()
export class InMemoryCacheService {
protected cacheData: Record<string, any> = {};
constructor(@inject("PrimaryCloner") protected cloner: ICloner) {}
/**
* Store data into an in-memory object
* @param key key to store data against
* @param dataToCache - Data to store in cache
*/
public storeByKey(key: string, dataToCache: any): void {
this.cacheData[key] = this.cloner.clone(dataToCache);
}
/**
* Retreve data stored by a key
* @param key key
* @returns Stored data
*/
public getDataByKey<T>(key: string): any | undefined {
if (this.cacheData[key]) {
return <T>this.cacheData[key];
}
return undefined;
}
/**
* Does data exists against the provided key
* @param key Key to check for data against
* @returns true if exists
*/
public hasStoredDataByKey(key: string): boolean {
if (this.cacheData[key]) {
return true;
}
return false;
}
/**
* Remove data stored against key
* @param key Key to remove data against
*/
public clearDataStoredByKey(key: string): void {
delete this.cacheData[key];
}
}

View File

@ -1,53 +0,0 @@
import { ISptProfile } from "@spt/models/eft/profile/ISptProfile";
import { ICloner } from "@spt/utils/cloners/ICloner";
import { inject, injectable } from "tsyringe";
@injectable()
export class ProfileSnapshotService {
protected storedProfileSnapshots: Record<string, ISptProfile> = {};
constructor(@inject("PrimaryCloner") protected cloner: ICloner) {}
/**
* Store a profile into an in-memory object
* @param sessionID session id - acts as the key
* @param profile - profile to save
*/
public storeProfileSnapshot(sessionID: string, profile: ISptProfile): void {
this.storedProfileSnapshots[sessionID] = this.cloner.clone(profile);
}
/**
* Retreve a stored profile
* @param sessionID key
* @returns A player profile object
*/
public getProfileSnapshot(sessionID: string): ISptProfile | undefined {
if (this.storedProfileSnapshots[sessionID]) {
return this.storedProfileSnapshots[sessionID];
}
return undefined;
}
/**
* Does a profile exists against the provided key
* @param sessionID key
* @returns true if exists
*/
public hasProfileSnapshot(sessionID: string): boolean {
if (this.storedProfileSnapshots[sessionID]) {
return true;
}
return false;
}
/**
* Remove a stored profile by key
* @param sessionID key
*/
public clearProfileSnapshot(sessionID: string): void {
delete this.storedProfileSnapshots[sessionID];
}
}