@satoshibits/cache-keys
Version:
Type-safe cache key generation with zero dependencies
80 lines • 3.08 kB
JavaScript
;
import { createSimpleKeyFactory, createKeyFactory, createDualKeyFactory, createPaginatedKeyFactory } from '../factory.mjs';
import { sanitizeKeyComponent, splitKeyComponents } from '../sanitizer.mjs';
/**
* Campaign-related cache key factories
*/
export var campaignKeys = {
/**
* Campaign details key
* @example campaignKeys.details.key('campaign123')
* @returns 'campaign:details:campaign123'
*/
details: createSimpleKeyFactory('campaign', 'details'),
/**
* Campaign statistics key
* @example campaignKeys.stats.key('campaign123')
* @returns 'campaign:stats:campaign123'
*/
stats: createSimpleKeyFactory('campaign', 'stats'),
/**
* Campaign performance by date key
* @example campaignKeys.performance.key('campaign123', '2024-01-15')
* @returns 'campaign:performance:campaign123:2024-01-15'
*/
performance: createKeyFactory('campaign', 'performance', function (campaignId, date) {
return "".concat(sanitizeKeyComponent(String(campaignId)), ":").concat(sanitizeKeyComponent(date));
}, function (suffix) {
var _a, _b;
var parts = splitKeyComponents(suffix, ':', true);
if (parts.length !== 2)
return null;
return {
campaignId: (_a = parts[0]) !== null && _a !== void 0 ? _a : '',
date: (_b = parts[1]) !== null && _b !== void 0 ? _b : ''
};
}),
/**
* Campaign list by account paginated key
* @example campaignKeys.list.key('account123', 1, 20)
* @returns 'campaign:list:account123:page_1:limit_20'
*/
list: createPaginatedKeyFactory('campaign', 'list'),
/**
* Campaign targeting rules key
* @example campaignKeys.targeting.key('campaign123')
* @returns 'campaign:targeting:campaign123'
*/
targeting: createSimpleKeyFactory('campaign', 'targeting'),
/**
* Campaign budget key
* @example campaignKeys.budget.key('campaign123')
* @returns 'campaign:budget:campaign123'
*/
budget: createSimpleKeyFactory('campaign', 'budget'),
/**
* Campaign segments relationship key
* @example campaignKeys.segments.key('campaign123', 'segment456')
* @returns 'campaign:segments:campaign123:segment456'
*/
segments: createDualKeyFactory('campaign', 'segments', 'campaignId', 'segmentId'),
/**
* Campaign creative assets key
* @example campaignKeys.creatives.key('campaign123')
* @returns 'campaign:creatives:campaign123'
*/
creatives: createSimpleKeyFactory('campaign', 'creatives'),
/**
* Campaign schedule key
* @example campaignKeys.schedule.key('campaign123')
* @returns 'campaign:schedule:campaign123'
*/
schedule: createSimpleKeyFactory('campaign', 'schedule'),
/**
* Campaign conversion tracking key
* @example campaignKeys.conversions.key('campaign123')
* @returns 'campaign:conversions:campaign123'
*/
conversions: createSimpleKeyFactory('campaign', 'conversions'),
};
//# sourceMappingURL=campaign.mjs.map