feat: implement Redis caching for business activities and consumers
- Added Redis caching to BusinessActivitiesService for findAll and findOne methods. - Integrated Redis caching in BusinessActivityComplexesService for findAll and findOne methods. - Enhanced ConsumersService with Redis caching for findAll and findOne methods. - Introduced cache invalidation for partner consumers and business activities. - Created RedisKeyMaker utility for generating cache keys for consumers, partners, and POS. - Implemented cache invalidation services for partners and POS. - Added Redis service methods for JSON handling and key deletion by patterns. - Updated goods service to include caching and invalidation for goods list. - Introduced DTO for updating goods.
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
export * from './jwt-user.util'
|
||||
export * from './enum-translator.util'
|
||||
export * from './http-client.util'
|
||||
export * from './jwt-user.util'
|
||||
export * from './mappers/consumer_mappers.util'
|
||||
export * from './password.util'
|
||||
export * from './redisKeyMaker'
|
||||
export * from './tracking-code-generator.util'
|
||||
export * from './http-client.util'
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
export class ConsumerKeyMaker {
|
||||
static consumerInfo(consumerId: string): string {
|
||||
return `consumers:${consumerId}:info`
|
||||
}
|
||||
|
||||
static consumerBusinessActivitiesList(consumerId: string): string {
|
||||
return `consumers:${consumerId}:business-activities:list`
|
||||
}
|
||||
|
||||
static consumerBusinessActivityInfo(
|
||||
consumerId: string,
|
||||
businessActivityId: string,
|
||||
): string {
|
||||
return `consumers:${consumerId}:business-activities:${businessActivityId}:info`
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
export class EnumKeyMaker {
|
||||
static enumsAll(buildVersion: string): string {
|
||||
return `enums:${buildVersion}:all`
|
||||
}
|
||||
|
||||
static enumsValues(buildVersion: string, enumName: string): string {
|
||||
return `enums:${buildVersion}:values:${enumName}`
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
export class GuildKeyMaker {
|
||||
static guildStockKeepingUnitsList(guildId: string): string {
|
||||
return `guilds:${guildId}:stock-keeping-units:list`
|
||||
}
|
||||
|
||||
static guildGoodsList(guildId: string): string {
|
||||
return `guilds:${guildId}:goods:list`
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
import { ConsumerKeyMaker } from './consumer'
|
||||
import { EnumKeyMaker } from './enum'
|
||||
import { GuildKeyMaker } from './guild'
|
||||
import { PartnerKeyMaker } from './partner'
|
||||
import { PosKeyMaker } from './pos'
|
||||
|
||||
// Keep backward-compatible static methods while separating key builders by domain.
|
||||
export class RedisKeyMaker extends PartnerKeyMaker {
|
||||
static consumer = ConsumerKeyMaker
|
||||
static enums = EnumKeyMaker
|
||||
static guild = GuildKeyMaker
|
||||
static partner = PartnerKeyMaker
|
||||
static pos = PosKeyMaker
|
||||
|
||||
static consumerInfo = ConsumerKeyMaker.consumerInfo
|
||||
static consumerBusinessActivitiesList = ConsumerKeyMaker.consumerBusinessActivitiesList
|
||||
static consumerBusinessActivityInfo = ConsumerKeyMaker.consumerBusinessActivityInfo
|
||||
|
||||
static guildStockKeepingUnitsList = GuildKeyMaker.guildStockKeepingUnitsList
|
||||
static guildGoodsList = GuildKeyMaker.guildGoodsList
|
||||
|
||||
static posInfo = PosKeyMaker.posInfo
|
||||
static posMe = PosKeyMaker.posMe
|
||||
static posGoodsList = PosKeyMaker.posGoodsList
|
||||
|
||||
static enumsAll = EnumKeyMaker.enumsAll
|
||||
static enumsValues = EnumKeyMaker.enumsValues
|
||||
}
|
||||
|
||||
export { ConsumerKeyMaker, EnumKeyMaker, GuildKeyMaker, PartnerKeyMaker, PosKeyMaker }
|
||||
@@ -0,0 +1,135 @@
|
||||
export class PartnerKeyMaker {
|
||||
static partnersList(): string {
|
||||
return 'partners:list'
|
||||
}
|
||||
|
||||
static partnerDetail(partnerId: string): string {
|
||||
return `partners:${partnerId}:detail`
|
||||
}
|
||||
|
||||
static partnerActivatedLicensesList(
|
||||
partnerId: string,
|
||||
page: number,
|
||||
perPage: number,
|
||||
): string {
|
||||
return `partners:${partnerId}:activated-licenses:list:${page}:${perPage}`
|
||||
}
|
||||
|
||||
static partnerActivatedLicensesListPattern(partnerId: string): string {
|
||||
return `partners:${partnerId}:activated-licenses:list:*`
|
||||
}
|
||||
|
||||
static partnerLicenseChargeTransactionsList(
|
||||
partnerId: string,
|
||||
page: number,
|
||||
perPage: number,
|
||||
): string {
|
||||
return `partners:${partnerId}:license-charge-transactions:list:${page}:${perPage}`
|
||||
}
|
||||
|
||||
static partnerLicenseChargeTransactionsListPattern(partnerId: string): string {
|
||||
return `partners:${partnerId}:license-charge-transactions:list:*`
|
||||
}
|
||||
|
||||
static partnerLicenseChargeTransactionDetail(
|
||||
partnerId: string,
|
||||
transactionId: string,
|
||||
): string {
|
||||
return `partners:${partnerId}:license-charge-transactions:${transactionId}:detail`
|
||||
}
|
||||
|
||||
static partnerLicenseChargeTransactionDetailPattern(partnerId: string): string {
|
||||
return `partners:${partnerId}:license-charge-transactions:*:detail`
|
||||
}
|
||||
|
||||
//////////////////// consumers ////////////////////
|
||||
|
||||
static partnerConsumersPattern(partnerId: string): string {
|
||||
return `partners:${partnerId}:consumers:*`
|
||||
}
|
||||
|
||||
static partnerConsumerPattern(partnerId: string): string {
|
||||
return this.partnerConsumersPattern(partnerId)
|
||||
}
|
||||
static partnerConsumersListPattern(partnerId: string): string {
|
||||
return `partners:${partnerId}:consumers:list:*`
|
||||
}
|
||||
|
||||
static partnerConsumersList(partnerId: string, page: number, perPage: number): string {
|
||||
return `partners:${partnerId}:consumers:list:${page}:${perPage}`
|
||||
}
|
||||
|
||||
static partnerConsumerInfo(partnerId: string, consumerId: string): string {
|
||||
return `partners:${partnerId}:consumers:${consumerId}:info`
|
||||
}
|
||||
|
||||
static partnerConsumerBusinessActivitiesList(
|
||||
partnerId: string,
|
||||
consumerId: string,
|
||||
page: number,
|
||||
perPage: number,
|
||||
): string {
|
||||
return `partners:${partnerId}:consumers:${consumerId}:business-activities:list:${page}:${perPage}`
|
||||
}
|
||||
|
||||
static partnerConsumerBusinessActivitiesPattern(
|
||||
partnerId: string,
|
||||
consumerId: string,
|
||||
): string {
|
||||
return `partners:${partnerId}:consumers:${consumerId}:business-activities:*`
|
||||
}
|
||||
|
||||
static partnerConsumerBusinessActivityInfo(
|
||||
partnerId: string,
|
||||
consumerId: string,
|
||||
businessActivityId: string,
|
||||
): string {
|
||||
return `partners:${partnerId}:consumers:${consumerId}:business-activities:${businessActivityId}:info`
|
||||
}
|
||||
|
||||
static partnerConsumerBusinessActivityComplexesList(
|
||||
partnerId: string,
|
||||
consumerId: string,
|
||||
businessActivityId: string,
|
||||
page: number,
|
||||
perPage: number,
|
||||
): string {
|
||||
return `partners:${partnerId}:consumers:${consumerId}:business-activities:${businessActivityId}:complexes:list:${page}:${perPage}`
|
||||
}
|
||||
|
||||
static partnerConsumerBusinessActivityComplexesPattern(
|
||||
partnerId: string,
|
||||
consumerId: string,
|
||||
businessActivityId: string,
|
||||
): string {
|
||||
return `partners:${partnerId}:consumers:${consumerId}:business-activities:${businessActivityId}:complexes:*`
|
||||
}
|
||||
|
||||
static partnerConsumerBusinessActivityComplexInfo(
|
||||
partnerId: string,
|
||||
consumerId: string,
|
||||
businessActivityId: string,
|
||||
complexId: string,
|
||||
): string {
|
||||
return `partners:${partnerId}:consumers:${consumerId}:business-activities:${businessActivityId}:complexes:${complexId}`
|
||||
}
|
||||
|
||||
static partnerConsumerBusinessActivityComplexPosesPattern(
|
||||
partnerId: string,
|
||||
consumerId: string,
|
||||
businessActivityId: string,
|
||||
complexId: string,
|
||||
): string {
|
||||
return `partners:${partnerId}:consumers:${consumerId}:business-activities:${businessActivityId}:complexes:${complexId}:poses:*`
|
||||
}
|
||||
|
||||
static partnerConsumerBusinessActivityComplexPosInfo(
|
||||
partnerId: string,
|
||||
consumerId: string,
|
||||
businessActivityId: string,
|
||||
complexId: string,
|
||||
posId: string,
|
||||
): string {
|
||||
return `partners:${partnerId}:consumers:${consumerId}:business-activities:${businessActivityId}:complexes:${complexId}:poses:${posId}`
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
export class PosKeyMaker {
|
||||
static posInfo(posId: string): string {
|
||||
return `pos:${posId}:info`
|
||||
}
|
||||
|
||||
static posMe(accountId: string, posId: string): string {
|
||||
return `pos:${posId}:me:${accountId}`
|
||||
}
|
||||
|
||||
static posGoodsList(businessActivityId: string, guildId: string): string {
|
||||
return `pos:ba:${businessActivityId}:guild:${guildId}:goods:list`
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user