@levrbet/shared 0.2.66 → 0.2.68
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/server/oracle/redis-cache-manager/cache.keys.utils.d.ts +2 -0
- package/dist/server/oracle/redis-cache-manager/cache.keys.utils.js +7 -1
- package/dist/server/oracle/redis-cache-manager/cache.keys.utils.js.map +1 -1
- package/dist/server/oracle/redis-cache-manager/game.cache.service.js +19 -5
- package/dist/server/oracle/redis-cache-manager/game.cache.service.js.map +1 -1
- package/dist/server/oracle/redis-cache-manager/market.cache.service.d.ts +5 -33
- package/dist/server/oracle/redis-cache-manager/market.cache.service.js +17 -161
- package/dist/server/oracle/redis-cache-manager/market.cache.service.js.map +1 -1
- package/dist/server/oracle/redis-cache-manager/market.query.engine.d.ts +110 -0
- package/dist/server/oracle/redis-cache-manager/market.query.engine.js +413 -0
- package/dist/server/oracle/redis-cache-manager/market.query.engine.js.map +1 -0
- package/package.json +1 -1
|
@@ -88,3 +88,5 @@ export declare const getCompletedMarketsKey: (marketType: MarketType) => string;
|
|
|
88
88
|
export declare const getCompletedMarketsField: (gameUniqueId: string, marketType: MarketType) => string;
|
|
89
89
|
export declare const getGamesKeyByChainId: (gameCollectionKey: GameCollectionKeys, chainId: number) => string;
|
|
90
90
|
export declare const getRevokedApiKey: (keyId: string) => string;
|
|
91
|
+
export declare const getMarketKeyWithGameUniqueIdMarketType: (gameUniqueId: string, marketType: MarketType) => string;
|
|
92
|
+
export declare const market_index_name = "idx:markets";
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
*
|
|
6
6
|
*/
|
|
7
7
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
-
exports.getRevokedApiKey = exports.getGamesKeyByChainId = exports.getCompletedMarketsField = exports.getCompletedMarketsKey = exports.getGameToMarketsOfOddsInCacheKey = exports.getMarketOddsByGameUniqueIdKeyAndMarketType = exports.getMarketOddsByMarketIdKey = exports.getLevrFixtureIdToProviderIdsKey = exports.getProviderIdsToLevrFixtureIdKey = exports.getMarketOddsField = exports.getCachedLevrByFixtureIdKey = exports.getCacheLevrGameIdKey = exports.getMoneylineByGameIdKey = exports.cacheTimeInvalidation = exports.marketByGameUniqueIdKeyAndMarketType = exports.marketByMarketIdKey = exports.marketOddsKey = exports.baseBallGamePeriodInfo = exports.gameToMarketOfOddsInCache = exports.levrGames = exports.getGameScoreByFixtureIdHash = exports.gameIdsToFixtureIds = exports.gameIdsToLevrFixtureIdsMap = exports.schedulesHash = exports.RedisNumStates = exports.GameCollectionKeys = exports.queueBlockHashKey = exports.levrIdToProviderIds = exports.providerFixtureIdToLevrId = void 0;
|
|
8
|
+
exports.market_index_name = exports.getMarketKeyWithGameUniqueIdMarketType = exports.getRevokedApiKey = exports.getGamesKeyByChainId = exports.getCompletedMarketsField = exports.getCompletedMarketsKey = exports.getGameToMarketsOfOddsInCacheKey = exports.getMarketOddsByGameUniqueIdKeyAndMarketType = exports.getMarketOddsByMarketIdKey = exports.getLevrFixtureIdToProviderIdsKey = exports.getProviderIdsToLevrFixtureIdKey = exports.getMarketOddsField = exports.getCachedLevrByFixtureIdKey = exports.getCacheLevrGameIdKey = exports.getMoneylineByGameIdKey = exports.cacheTimeInvalidation = exports.marketByGameUniqueIdKeyAndMarketType = exports.marketByMarketIdKey = exports.marketOddsKey = exports.baseBallGamePeriodInfo = exports.gameToMarketOfOddsInCache = exports.levrGames = exports.getGameScoreByFixtureIdHash = exports.gameIdsToFixtureIds = exports.gameIdsToLevrFixtureIdsMap = exports.schedulesHash = exports.RedisNumStates = exports.GameCollectionKeys = exports.queueBlockHashKey = exports.levrIdToProviderIds = exports.providerFixtureIdToLevrId = void 0;
|
|
9
9
|
exports.providerFixtureIdToLevrId = "provider_fixture_id_to_levrId";
|
|
10
10
|
exports.levrIdToProviderIds = "levr_id_to_provider_ids";
|
|
11
11
|
exports.queueBlockHashKey = "queue_block_key";
|
|
@@ -144,4 +144,10 @@ const getRevokedApiKey = (keyId) => {
|
|
|
144
144
|
return `revoked:${keyId}`;
|
|
145
145
|
};
|
|
146
146
|
exports.getRevokedApiKey = getRevokedApiKey;
|
|
147
|
+
/// new key
|
|
148
|
+
const getMarketKeyWithGameUniqueIdMarketType = (gameUniqueId, marketType) => {
|
|
149
|
+
return `markets_unique_id:${gameUniqueId}:${marketType}`;
|
|
150
|
+
};
|
|
151
|
+
exports.getMarketKeyWithGameUniqueIdMarketType = getMarketKeyWithGameUniqueIdMarketType;
|
|
152
|
+
exports.market_index_name = "idx:markets";
|
|
147
153
|
//# sourceMappingURL=cache.keys.utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache.keys.utils.js","sourceRoot":"","sources":["../../../../src/server/oracle/redis-cache-manager/cache.keys.utils.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cache.keys.utils.js","sourceRoot":"","sources":["../../../../src/server/oracle/redis-cache-manager/cache.keys.utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -40,6 +40,11 @@ const setGamesCache = async (pipeline, games, gameCollectionKey) => {
|
|
|
40
40
|
const fixtureKey = (0, cache_keys_utils_1.getCachedLevrByFixtureIdKey)(game.levrFixtureId, game.chainId);
|
|
41
41
|
// Store games array under fixture key
|
|
42
42
|
pipeline.hset(hash, fixtureKey, JSON.stringify(game));
|
|
43
|
+
// map provider fixture ids to levr fixture ids
|
|
44
|
+
if (game.lsportsFixtureId && game.levrFixtureId)
|
|
45
|
+
pipeline.hset(cache_keys_utils_1.providerFixtureIdToLevrId, game.lsportsFixtureId, game.levrFixtureId);
|
|
46
|
+
if (game.lsportsFixtureId && game.levrFixtureId)
|
|
47
|
+
pipeline.hset(cache_keys_utils_1.providerFixtureIdToLevrId, game.levrFixtureId, game.lsportsFixtureId);
|
|
43
48
|
pipeline.hset(cache_keys_utils_1.gameIdsToLevrFixtureIdsMap, game.gameId, game.levrFixtureId);
|
|
44
49
|
});
|
|
45
50
|
const results = await pipeline.exec();
|
|
@@ -227,7 +232,11 @@ const getGamesCacheWithRelations = async (redis, gameCollectionKey, chainId) =>
|
|
|
227
232
|
// get game markets for each game
|
|
228
233
|
const gameUniqueIdentifiers = games.map((game) => game.objectId);
|
|
229
234
|
const marketTypesArray = Object.values(client_1.MarketType);
|
|
230
|
-
const
|
|
235
|
+
const gameMarketsQuery = gameUniqueIdentifiers.flatMap((gameUniqueId) => marketTypesArray.map((marketType) => ({
|
|
236
|
+
gameUniqueIdentifier: gameUniqueId,
|
|
237
|
+
marketType,
|
|
238
|
+
})));
|
|
239
|
+
const gameMarkets = await (0, market_cache_service_1.getMarketDataCacheWithOdds)(redis, gameMarketsQuery);
|
|
231
240
|
// map markets to games
|
|
232
241
|
// scores
|
|
233
242
|
const scoresHash = gamesScoresResult;
|
|
@@ -238,7 +247,7 @@ const getGamesCacheWithRelations = async (redis, gameCollectionKey, chainId) =>
|
|
|
238
247
|
}
|
|
239
248
|
}
|
|
240
249
|
const gamesWithMarketsAndScores = games.map((game) => {
|
|
241
|
-
const markets = gameMarkets
|
|
250
|
+
const markets = gameMarkets[game.objectId] ?? [];
|
|
242
251
|
const score = scores[game.levrFixtureId] ?? null;
|
|
243
252
|
if (!markets) {
|
|
244
253
|
return {
|
|
@@ -325,12 +334,17 @@ const getSpecificGamesCacheWithRelations = async (redis, gameCollectionKey, levr
|
|
|
325
334
|
}
|
|
326
335
|
const gamesWithRelations = [];
|
|
327
336
|
const gameUniqueIdentifiers = specificGames.map((game) => game.objectId);
|
|
328
|
-
|
|
329
|
-
const
|
|
337
|
+
// Create query for all markets
|
|
338
|
+
const allMarketTypes = Object.values(client_1.MarketType);
|
|
339
|
+
const allMarketsQuery = gameUniqueIdentifiers.flatMap((gameUniqueId) => allMarketTypes.map((marketType) => ({
|
|
340
|
+
gameUniqueIdentifier: gameUniqueId,
|
|
341
|
+
marketType,
|
|
342
|
+
})));
|
|
343
|
+
const gameMarkets = await (0, market_cache_service_1.getMarketDataCacheWithOdds)(redis, allMarketsQuery);
|
|
330
344
|
for (const game of specificGames) {
|
|
331
345
|
const fixtureId = game.levrFixtureId;
|
|
332
346
|
const score = scores[fixtureId] ?? null;
|
|
333
|
-
const markets = gameMarkets
|
|
347
|
+
const markets = gameMarkets[game.objectId] ?? [];
|
|
334
348
|
gamesWithRelations.push({
|
|
335
349
|
...game,
|
|
336
350
|
markets,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"game.cache.service.js","sourceRoot":"","sources":["../../../../src/server/oracle/redis-cache-manager/game.cache.service.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"game.cache.service.js","sourceRoot":"","sources":["../../../../src/server/oracle/redis-cache-manager/game.cache.service.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;;;;;;AAEH,2CAAgE;AAKhE,yCAAgD;AAChD,mEAAyC;AACzC,yDAS2B;AAC3B,iEAAmE;AAEnE,6GAA6G;AAE7G;;;;;;;;;;;;;GAaG;AACH,MAAM,aAAa,GAAG,KAAK,EACvB,QAA4B,EAC5B,KAAiB,EACjB,iBAAqC,EACxB,EAAE;IACf,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QACnB,MAAM,IAAI,GAAG,IAAA,uCAAoB,EAAC,iBAAiB,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;QAClE,MAAM,UAAU,GAAG,IAAA,8CAA2B,EAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;QAChF,sCAAsC;QACtC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAA;QACrD,+CAA+C;QAC/C,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,aAAa;YAC3C,QAAQ,CAAC,IAAI,CAAC,4CAAyB,EAAE,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,aAAa,CAAC,CAAA;QACvF,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,aAAa;YAC3C,QAAQ,CAAC,IAAI,CAAC,4CAAyB,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAA;QAEvF,QAAQ,CAAC,IAAI,CAAC,6CAA0B,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,CAAA;IAC9E,CAAC,CAAC,CAAA;IAEF,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;IACrC,IAAI,CAAC,OAAO,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,qDAAqD,iBAAiB,EAAE,CAAC,CAAA;IAC7F,CAAC;IACD,KAAK,MAAM,CAAC,GAAG,CAAC,IAAI,OAAO,EAAE,CAAC;QAC1B,IAAI,GAAG,EAAE,CAAC;YACN,MAAM,IAAI,KAAK,CAAC,2BAA2B,iBAAiB,KAAK,GAAG,CAAC,OAAO,EAAE,CAAC,CAAA;QACnF,CAAC;IACL,CAAC;IACD,iBAAM,CAAC,IAAI,CAAC,UAAU,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,cAAc,iBAAiB,EAAE,CAAC,CAAA;AACnF,CAAC,CAAA;AAED;;;;;;GAMG;AACI,MAAM,mBAAmB,GAAG,KAAK,EAAE,QAA4B,EAAE,KAAiB,EAAiB,EAAE;IACxG,MAAM,aAAa,CAAC,QAAQ,EAAE,KAAK,EAAE,qCAAkB,CAAC,eAAe,CAAC,CAAA;AAC5E,CAAC,CAAA;AAFY,QAAA,mBAAmB,uBAE/B;AAED;;;;;;GAMG;AACI,MAAM,iBAAiB,GAAG,KAAK,EAAE,QAA4B,EAAE,KAAiB,EAAiB,EAAE;IACtG,MAAM,aAAa,CAAC,QAAQ,EAAE,KAAK,EAAE,qCAAkB,CAAC,aAAa,CAAC,CAAA;AAC1E,CAAC,CAAA;AAFY,QAAA,iBAAiB,qBAE7B;AAED,mHAAmH;AAEnH,MAAM,gBAAgB,GAAG,KAAK,EAC1B,KAAY,EACZ,MAAc,EACd,OAAkB,EAClB,iBAAqC,EACb,EAAE;IAC1B,kCAAkC;IAClC,MAAM,SAAS,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,6CAA0B,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAA;IACjF,IAAI,CAAC,SAAS;QAAE,OAAO,IAAI,CAAA;IAE3B,iCAAiC;IACjC,MAAM,UAAU,GAAG,IAAA,8CAA2B,EAAC,SAAS,EAAE,OAAO,CAAC,CAAA;IAClE,MAAM,IAAI,GAAG,IAAA,uCAAoB,EAAC,iBAAiB,EAAE,OAAO,CAAC,CAAA;IAC7D,MAAM,WAAW,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,CAAA;IACtD,IAAI,CAAC,WAAW;QAAE,OAAO,IAAI,CAAA;IAE7B,yBAAyB;IACzB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAa,CAAA;IAChD,OAAO,IAAI,CAAA;AACf,CAAC,CAAA;AAED;;;;GAIG;AACI,MAAM,0BAA0B,GAAG,KAAK,EAAE,KAAY,EAAE,MAAc,EAAE,OAAkB,EAA4B,EAAE;IAC3H,OAAO,MAAM,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,qCAAkB,CAAC,eAAe,CAAC,CAAA;AAC7F,CAAC,CAAA;AAFY,QAAA,0BAA0B,8BAEtC;AAED;;;;GAIG;AACI,MAAM,wBAAwB,GAAG,KAAK,EAAE,KAAY,EAAE,MAAc,EAAE,OAAkB,EAA4B,EAAE;IACzH,OAAO,MAAM,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,qCAAkB,CAAC,aAAa,CAAC,CAAA;AAC3F,CAAC,CAAA;AAFY,QAAA,wBAAwB,4BAEpC;AAED;;;;;;;GAOG;AACI,MAAM,mBAAmB,GAAG,KAAK,EACpC,KAAY,EACZ,aAAqB,EACrB,iBAAqC,EAClB,EAAE;IACrB,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAA;IACjC,MAAM,SAAS,GAAe,EAAE,CAAA;IAChC,KAAK,MAAM,OAAO,IAAI,0BAAiB,EAAE,CAAC;QACtC,MAAM,UAAU,GAAG,IAAA,8CAA2B,EAAC,aAAa,EAAE,OAAO,CAAC,CAAA;QACtE,MAAM,IAAI,GAAG,IAAA,uCAAoB,EAAC,iBAAiB,EAAE,OAAO,CAAC,CAAA;QAE7D,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,CAAA;IACnC,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;IACrC,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,CAAA;IAEvB,KAAK,MAAM,CAAC,GAAG,EAAE,WAAW,CAAC,IAAI,OAAO,EAAE,CAAC;QACvC,IAAI,GAAG;YAAE,MAAM,GAAG,CAAA;QAClB,IAAI,WAAW,EAAE,CAAC;YACd,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,WAAqB,CAAa,CAAA;YAC1D,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACxB,CAAC;IACL,CAAC;IAED,OAAO,SAAS,CAAA;AACpB,CAAC,CAAA;AA1BY,QAAA,mBAAmB,uBA0B/B;AAED;;;;;;;GAOG;AACI,MAAM,yBAAyB,GAAG,KAAK,EAAE,KAAY,EAAE,aAAqB,EAAuB,EAAE;IACxG,OAAO,IAAA,2BAAmB,EAAC,KAAK,EAAE,aAAa,EAAE,qCAAkB,CAAC,eAAe,CAAC,CAAA;AACxF,CAAC,CAAA;AAFY,QAAA,yBAAyB,6BAErC;AAEM,MAAM,uBAAuB,GAAG,KAAK,EAAE,KAAY,EAAE,aAAqB,EAAuB,EAAE;IACtG,OAAO,IAAA,2BAAmB,EAAC,KAAK,EAAE,aAAa,EAAE,qCAAkB,CAAC,aAAa,CAAC,CAAA;AACtF,CAAC,CAAA;AAFY,QAAA,uBAAuB,2BAEnC;AAED,yGAAyG;AAEzG;;;;;;;;;;;GAWG;AACH,MAAM,aAAa,GAAG,KAAK,EAAE,KAAY,EAAE,iBAAqC,EAAE,OAAkB,EAAuB,EAAE;IACzH,MAAM,IAAI,GAAG,IAAA,uCAAoB,EAAC,iBAAiB,EAAE,OAAO,CAAC,CAAA;IAC7D,MAAM,WAAW,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;IAE7C,2BAA2B;IAC3B,qBAAqB;IACrB,4CAA4C;IAC5C,4CAA4C;IAC5C,UAAU;IACV,IAAI;IACJ,MAAM,KAAK,GAAe,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAa,CAAC,CAAA;IAE5G,OAAO,KAAK,CAAA;AAChB,CAAC,CAAA;AAED,uCAAuC;AACvC;;;;;;GAMG;AACH,MAAM,0BAA0B,GAAG,KAAK,EACpC,KAAY,EACZ,iBAAqC,EACrC,OAAkB,EACuB,EAAE;IAC3C,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAA;IACjC,kDAAkD;IAElD,MAAM,IAAI,GAAG,IAAA,uCAAoB,EAAC,iBAAiB,EAAE,OAAO,CAAC,CAAA;IAE7D,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;IAEtB,qCAAqC;IACrC,QAAQ,CAAC,OAAO,CAAC,8CAA2B,CAAC,CAAA;IAE7C,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;IAErC,2BAA2B;IAC3B,qBAAqB;IACrB,4CAA4C;IAC5C,4CAA4C;IAC5C,UAAU;IACV,IAAI;IAEJ,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAA;IAChD,CAAC;IAED,uCAAuC;IACvC,MAAM,CAAC,WAAW,EAAE,YAAY,CAAC,GAAG,OAAO,CAAA;IAC3C,IAAI,CAAC,WAAW,IAAI,CAAC,YAAY,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAA;IAC/C,CAAC;IACD,MAAM,CAAC,UAAU,EAAE,eAAe,CAAC,GAAG,WAAW,CAAA;IACjD,MAAM,CAAC,WAAW,EAAE,iBAAiB,CAAC,GAAG,YAAY,CAAA;IAErD,IAAI,UAAU;QAAE,MAAM,UAAU,CAAA;IAChC,IAAI,WAAW;QAAE,MAAM,WAAW,CAAA;IAElC,oGAAoG;IACpG,yDAAyD;IACzD,iDAAiD;IACjD,IAAI,CAAC,eAAe,IAAI,OAAO,eAAe,KAAK,QAAQ,EAAE,CAAC;QAC1D,OAAO,EAAE,CAAA;IACb,CAAC;IAED,MAAM,SAAS,GAAG,eAAyC,CAAA,CAAC,uCAAuC;IAEnG,MAAM,KAAK,GAAe,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAa,CAAC,CAAA;IAE1G,iCAAiC;IACjC,MAAM,qBAAqB,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IAEhE,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,CAAC,mBAAU,CAAC,CAAA;IAElD,MAAM,gBAAgB,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC,YAAY,EAAE,EAAE,CACpE,gBAAgB,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;QAClC,oBAAoB,EAAE,YAAY;QAClC,UAAU;KACb,CAAC,CAAC,CACN,CAAA;IAED,MAAM,WAAW,GAAG,MAAM,IAAA,iDAA0B,EAAC,KAAK,EAAE,gBAAgB,CAAC,CAAA;IAE7E,uBAAuB;IAEvB,SAAS;IAET,MAAM,UAAU,GAAG,iBAA2C,CAAA;IAE9D,MAAM,MAAM,GAA+B,EAAE,CAAA;IAC7C,KAAK,MAAM,CAAC,aAAa,EAAE,WAAW,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;QACpE,IAAI,WAAW,EAAE,CAAC;YACd,MAAM,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAe,CAAA;QACjE,CAAC;IACL,CAAC;IAED,MAAM,yBAAyB,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACjD,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAA;QAChD,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,IAAI,CAAA;QAChD,IAAI,CAAC,OAAO,EAAE,CAAC;YACX,OAAO;gBACH,GAAG,IAAI;gBACP,OAAO,EAAE,EAAE;gBACX,MAAM,EAAE,KAAK;aAChB,CAAA;QACL,CAAC;QACD,OAAO;YACH,GAAG,IAAI;YACP,OAAO;YACP,MAAM,EAAE,KAAK;SAChB,CAAA;IACL,CAAC,CAAC,CAAA;IAEF,OAAO,yBAAyB,CAAA;AACpC,CAAC,CAAA;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,gCAAgC,GAAG,KAAK,EAC1C,KAAY,EACZ,iBAAqC,EACrC,cAAwB,EACxB,OAAkB,EACC,EAAE;IACrB,8CAA8C;IAC9C,MAAM,MAAM,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,IAAA,8CAA2B,EAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAA;IAEjG,MAAM,IAAI,GAAG,IAAA,uCAAoB,EAAC,iBAAiB,EAAE,OAAO,CAAC,CAAA;IAE7D,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,MAAM,CAAC,CAAA;IAElD;;;;OAIG;IAEH,MAAM,aAAa,GAAe,EAAE,CAAA;IAEpC,KAAK,MAAM,WAAW,IAAI,OAAO,EAAE,CAAC;QAChC,IAAI,CAAC,WAAW;YAAE,SAAQ,CAAC,gCAAgC;QAC3D,IAAI,WAAW,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE,CAAC;YACjD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAa,CAAA;YACjD,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAC7B,CAAC;IACL,CAAC;IAED,OAAO,aAAa,CAAA;AACxB,CAAC,CAAA;AAED,4CAA4C;AAC5C,MAAM,kCAAkC,GAAG,KAAK,EAC5C,KAAY,EACZ,iBAAyB,EACzB,cAAwB,EACxB,OAAkB,EACuB,EAAE;IAC3C,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAA;IAEjC,8CAA8C;IAC9C,MAAM,MAAM,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,IAAA,8CAA2B,EAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAA;IAEjG,QAAQ,CAAC,KAAK,CAAC,iBAAiB,EAAE,GAAG,MAAM,CAAC,CAAA;IAE5C,QAAQ,CAAC,KAAK,CAAC,8CAA2B,EAAE,GAAG,MAAM,CAAC,CAAA;IAEtD,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;IAErC,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAA;IAE/C,MAAM,aAAa,GAAe,EAAE,CAAA;IAEpC,MAAM,WAAW,GAAG,OAAO,CAAC,CAAC,CAAoC,CAAA;IAEjE,MAAM,YAAY,GAAG,OAAO,CAAC,CAAC,CAAoC,CAAA;IAElE,MAAM,MAAM,GAA+B,EAAE,CAAA;IAC7C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,CAAC,GAAG,EAAE,WAAW,CAAC,GAAG,YAAY,CAAC,CAAC,CAAE,CAAA;QAC3C,IAAI,GAAG;YAAE,MAAM,GAAG,CAAA;QAClB,IAAI,WAAW,EAAE,CAAC;YACd,MAAM,CAAC,MAAM,CAAC,CAAC,CAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAe,CAAA;QAC9D,CAAC;IACL,CAAC;IAED,KAAK,MAAM,CAAC,GAAG,EAAE,WAAW,CAAC,IAAI,WAAW,EAAE,CAAC;QAC3C,IAAI,GAAG;YAAE,MAAM,GAAG,CAAA;QAClB,IAAI,WAAW,EAAE,CAAC;YACd,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAe,CAAA;YAClD,aAAa,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAA;QAC/B,CAAC;IACL,CAAC;IAED,MAAM,kBAAkB,GAAqC,EAAE,CAAA;IAE/D,MAAM,qBAAqB,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IAExE,+BAA+B;IAC/B,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,mBAAU,CAAC,CAAA;IAChD,MAAM,eAAe,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC,YAAY,EAAE,EAAE,CACnE,cAAc,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;QAChC,oBAAoB,EAAE,YAAY;QAClC,UAAU;KACb,CAAC,CAAC,CACN,CAAA;IAED,MAAM,WAAW,GAAG,MAAM,IAAA,iDAA0B,EAAC,KAAK,EAAE,eAAe,CAAC,CAAA;IAE5E,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;QAC/B,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAA;QACpC,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,CAAA;QACvC,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAA;QAChD,kBAAkB,CAAC,IAAI,CAAC;YACpB,GAAG,IAAI;YACP,OAAO;YACP,MAAM,EAAE,KAAK;SAChB,CAAC,CAAA;IACN,CAAC;IAED,OAAO,kBAAkB,CAAA;AAC7B,CAAC,CAAA;AAED;;;;;;;;;;;;;;;;;GAiBG;AACI,MAAM,8BAA8B,GAAG,KAAK,EAC/C,KAAY,EACZ,iBAAqC,EACrC,OAAiB,EACjB,OAAkB,EAClB,aAAa,GAAG,KAAK,EACiC,EAAE;IACxD,gDAAgD;IAChD,MAAM,UAAU,GAAG,MAAM,KAAK,CAAC,KAAK,CAAC,6CAA0B,EAAE,GAAG,OAAO,CAAC,CAAA;IAC5E,MAAM,MAAM,GAAG,UAAU;SACpB,MAAM,CAAC,CAAC,SAAS,EAAuB,EAAE,CAAC,SAAS,KAAK,IAAI,CAAC;SAC9D,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,IAAA,8CAA2B,EAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAA;IAExE,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAA;IAClC,IAAI,aAAa,EAAE,CAAC;QAChB,OAAO,MAAM,kCAAkC,CAAC,KAAK,EAAE,iBAAiB,EAAE,MAAM,EAAE,OAAO,CAAC,CAAA;IAC9F,CAAC;IAED,OAAO,MAAM,gCAAgC,CAAC,KAAK,EAAE,iBAAiB,EAAE,MAAM,EAAE,OAAO,CAAC,CAAA;AAC5F,CAAC,CAAA;AAnBY,QAAA,8BAA8B,kCAmB1C;AAEM,MAAM,iCAAiC,GAAG,KAAK,EAClD,KAAY,EACZ,UAAoB,EACpB,OAAkB,EAClB,aAAa,GAAG,KAAK,EACrB,MAAM,GAAG,IAAI,EACyC,EAAE;IACxD,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAA;IAEtC,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,qCAAkB,CAAC,eAAe,CAAC,CAAC,CAAC,qCAAkB,CAAC,aAAa,CAAA;IAE3F,IAAI,aAAa,EAAE,CAAC;QAChB,OAAO,kCAAkC,CAAC,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,CAAC,CAAA;IAC/E,CAAC;IACD,OAAO,gCAAgC,CAAC,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,CAAC,CAAA;AAC7E,CAAC,CAAA;AAfY,QAAA,iCAAiC,qCAe7C;AAEM,MAAM,mBAAmB,GAAG,KAAK,EAAE,KAAY,EAAE,OAAkB,EAAuB,EAAE;IAC/F,OAAO,aAAa,CAAC,KAAK,EAAE,qCAAkB,CAAC,eAAe,EAAE,OAAO,CAAC,CAAA;AAC5E,CAAC,CAAA;AAFY,QAAA,mBAAmB,uBAE/B;AAEM,MAAM,gCAAgC,GAAG,KAAK,EACjD,KAAY,EACZ,OAAkB,EACuB,EAAE;IAC3C,OAAO,0BAA0B,CAAC,KAAK,EAAE,qCAAkB,CAAC,eAAe,EAAE,OAAO,CAAC,CAAA;AACzF,CAAC,CAAA;AALY,QAAA,gCAAgC,oCAK5C;AAEM,MAAM,iBAAiB,GAAG,KAAK,EAAE,KAAY,EAAE,OAAkB,EAAuB,EAAE;IAC7F,OAAO,aAAa,CAAC,KAAK,EAAE,qCAAkB,CAAC,aAAa,EAAE,OAAO,CAAC,CAAA;AAC1E,CAAC,CAAA;AAFY,QAAA,iBAAiB,qBAE7B;AAED;;;;GAIG;AACI,MAAM,uBAAuB,GAAG,KAAK,EAAE,KAAY,EAAE,SAAiB,EAA8B,EAAE;IACzG,OAAO,IAAA,2BAAmB,EAAC,KAAK,EAAE,SAAS,EAAE,qCAAkB,CAAC,eAAe,CAAC,CAAA;AACpF,CAAC,CAAA;AAFY,QAAA,uBAAuB,2BAEnC;AAED;;;;GAIG;AACI,MAAM,4CAA4C,GAAG,KAAK,EAC7D,KAAY,EACZ,iBAAyB,EACC,EAAE;IAC5B,IAAI,CAAC;QACD,MAAM,aAAa,GAAG,MAAM,sCAAsC,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAA;QAC5F,IAAI,CAAC,aAAa;YAAE,OAAO,IAAI,CAAA;QAE/B,MAAM,kBAAkB,GAAG,MAAM,IAAA,2BAAmB,EAAC,KAAK,EAAE,aAAa,EAAE,qCAAkB,CAAC,eAAe,CAAC,CAAA;QAE9G,OAAO,kBAAkB,CAAA;IAC7B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACX,iBAAM,CAAC,KAAK,CAAC,uCAAuC,EAAE,GAAG,CAAC,CAAA;QAC1D,OAAO,IAAI,CAAA;IACf,CAAC;AACL,CAAC,CAAA;AAfY,QAAA,4CAA4C,gDAexD;AAED,kHAAkH;AAElH,MAAM,gBAAgB,GAAG,KAAK,EAC1B,KAAY,EACZ,aAAqB,EACrB,OAAkB,EAClB,iBAAyB,EACZ,EAAE;IACf,IAAI,CAAC;QACD,MAAM,UAAU,GAAG,IAAA,8CAA2B,EAAC,aAAa,EAAE,OAAO,CAAC,CAAA;QACtE,MAAM,KAAK,CAAC,IAAI,CAAC,iBAAiB,EAAE,UAAU,CAAC,CAAA;QAC/C,MAAM,KAAK,CAAC,IAAI,CAAC,6CAA0B,EAAE,aAAa,CAAC,CAAA;IAC/D,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACX,iBAAM,CAAC,KAAK,CAAC,oCAAoC,aAAa,EAAE,EAAE,GAAG,CAAC,CAAA;IAC1E,CAAC;AACL,CAAC,CAAA;AAEM,MAAM,sBAAsB,GAAG,KAAK,EAAE,KAAY,EAAE,aAAqB,EAAE,OAAkB,EAAiB,EAAE;IACnH,MAAM,gBAAgB,CAAC,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,qCAAkB,CAAC,eAAe,CAAC,CAAA;AAC7F,CAAC,CAAA;AAFY,QAAA,sBAAsB,0BAElC;AAEM,MAAM,oBAAoB,GAAG,KAAK,EAAE,KAAY,EAAE,aAAqB,EAAE,OAAkB,EAAiB,EAAE;IACjH,MAAM,gBAAgB,CAAC,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,qCAAkB,CAAC,aAAa,CAAC,CAAA;AAC3F,CAAC,CAAA;AAFY,QAAA,oBAAoB,wBAEhC;AAED,uHAAuH;AAEvH;;;;;GAKG;AACI,MAAM,wBAAwB,GAAG,KAAK,EAAE,KAAY,EAAE,MAAc,EAAE,aAAqB,EAAiB,EAAE;IACjH,MAAM,UAAU,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,sCAAmB,EAAE,MAAM,CAAC,QAAQ,EAAE,EAAE,aAAa,CAAC,CAAA;IAC1F,IAAI,UAAU,KAAK,CAAC,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,qCAAqC,MAAM,CAAC,QAAQ,EAAE,sBAAsB,aAAa,EAAE,CAAC,CAAA;IAChH,CAAC;AACL,CAAC,CAAA;AALY,QAAA,wBAAwB,4BAKpC;AAEM,MAAM,mCAAmC,GAAG,KAAK,EAAE,KAAY,EAAE,UAA0B,EAAiB,EAAE;IACjH,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAA;IACjC,MAAM,IAAA,+CAAuC,EAAC,QAAQ,EAAE,CAAC,UAAU,CAAC,CAAC,CAAA;AACzE,CAAC,CAAA;AAHY,QAAA,mCAAmC,uCAG/C;AAEM,MAAM,uCAAuC,GAAG,KAAK,EACxD,QAA4B,EAC5B,cAAgC,EACnB,EAAE;IACf,uEAAuE;IACvE,KAAK,MAAM,EAAE,aAAa,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,IAAI,cAAc,EAAE,CAAC;QACnF,KAAK,MAAM,iBAAiB,IAAI,CAAC,gBAAgB,EAAE,kBAAkB,CAAC,EAAE,CAAC;YACrE,QAAQ,CAAC,IAAI,CAAC,4CAAyB,EAAE,iBAAiB,EAAE,aAAa,CAAC,CAAA;QAC9E,CAAC;QACD,QAAQ,CAAC,IAAI,CAAC,sCAAmB,EAAE,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,CAAC,CAAC,CAAA;IAC/G,CAAC;IACD,uBAAuB;IACvB,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;IAEpC,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CAAC,oEAAoE,CAAC,CAAA;IACzF,CAAC;AACL,CAAC,CAAA;AAjBY,QAAA,uCAAuC,2CAiBnD;AAED;;;;GAIG;AACI,MAAM,2BAA2B,GAAG,KAAK,EAAE,KAAY,EAAE,MAAc,EAA0B,EAAE;IACtG,OAAO,MAAM,KAAK,CAAC,IAAI,CAAC,6CAA0B,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAA;AAC1E,CAAC,CAAA;AAFY,QAAA,2BAA2B,+BAEvC;AAED;;;;GAIG;AACH,MAAM,sCAAsC,GAAG,KAAK,EAAE,KAAY,EAAE,iBAAyB,EAA0B,EAAE;IACrH,OAAO,MAAM,KAAK,CAAC,IAAI,CAAC,4CAAyB,EAAE,iBAAiB,CAAC,CAAA;AACzE,CAAC,CAAA;AAED,+GAA+G;AAE/G;;;;;;GAMG;AACI,MAAM,uBAAuB,GAAG,KAAK,EACxC,KAAY,EACZ,aAAqB,EACrB,SAAiB,EACjB,UAAkB,EACL,EAAE;IACf,MAAM,KAAK,GAAG,MAAM,IAAA,2BAAmB,EAAC,KAAK,EAAE,aAAa,EAAE,qCAAkB,CAAC,eAAe,CAAC,CAAA;IAEjG,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACvB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;QAC1B,IAAI,CAAC,aAAa,GAAG,UAAU,CAAA;IACnC,CAAC;IACD,MAAM,aAAa,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,EAAE,qCAAkB,CAAC,eAAe,CAAC,CAAA;AACzF,CAAC,CAAA;AAbY,QAAA,uBAAuB,2BAanC;AAED;;;;;GAKG;AACI,MAAM,kBAAkB,GAAG,KAAK,EAAE,KAAY,EAAE,SAAiB,EAAE,KAAiB,EAAiB,EAAE;IAC1G,MAAM,KAAK,GAAG,SAAS,CAAA;IACvB,IAAI,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,8CAA2B,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAA;QACxF,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;YACb,iBAAM,CAAC,IAAI,CAAC,2CAA2C,SAAS,EAAE,CAAC,CAAA;QACvE,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACX,iBAAM,CAAC,KAAK,CAAC,mCAAmC,EAAE,GAAG,CAAC,CAAA;IAC1D,CAAC;AACL,CAAC,CAAA;AAVY,QAAA,kBAAkB,sBAU9B;AAED;;;;GAIG;AACI,MAAM,iBAAiB,GAAG,KAAK,EAAE,KAAY,EAAE,SAAiB,EAA8B,EAAE;IACnG,MAAM,SAAS,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,8CAA2B,EAAE,SAAS,CAAC,CAAA;IAC1E,OAAO,SAAS,CAAC,CAAC,CAAE,IAAI,CAAC,KAAK,CAAC,SAAS,CAAgB,CAAC,CAAC,CAAC,IAAI,CAAA;AACnE,CAAC,CAAA;AAHY,QAAA,iBAAiB,qBAG7B;AAED;;;;;GAKG;AACI,MAAM,uBAAuB,GAAG,KAAK,EACxC,KAAY,EACZ,OAAiB,EACjB,aAAqB,EACrB,SAAoB,EACP,EAAE;IACf,MAAM,KAAK,GAAG,MAAM,IAAA,2BAAmB,EAAC,KAAK,EAAE,aAAa,EAAE,qCAAkB,CAAC,eAAe,CAAC,CAAA;IACjG,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACvB,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC;YAAE,SAAQ;QAC5C,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;IAC9B,CAAC;IACD,MAAM,aAAa,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,qCAAkB,CAAC,eAAe,CAAC,CAAA;AACpF,CAAC,CAAA;AAZY,QAAA,uBAAuB,2BAYnC;AAED;;;;GAIG;AACI,MAAM,gBAAgB,GAAG,KAAK,EAAE,KAAY,EAAE,aAAqB,EAAiB,EAAE;IACzF,MAAM,UAAU,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,sCAAmB,CAAC,CAAA;IAC3D,MAAM,eAAe,GAAG,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC;SAC7C,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC,SAAS,KAAK,aAAa,CAAC;SACpD,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAA;IAE9B,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7B,MAAM,KAAK,CAAC,IAAI,CAAC,sCAAmB,EAAE,GAAG,eAAe,CAAC,CAAA;IAC7D,CAAC;IAED,MAAM,4BAA4B,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,4CAAyB,CAAC,CAAA;IAEnF,MAAM,mBAAmB,GAAG,MAAM,CAAC,OAAO,CAAC,4BAA4B,CAAC;SACnE,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC,SAAS,KAAK,aAAa,CAAC;SACpD,GAAG,CAAC,CAAC,CAAC,iBAAiB,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,CAAA;IAEpD,IAAI,mBAAmB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACjC,MAAM,KAAK,CAAC,IAAI,CAAC,4CAAyB,EAAE,GAAG,mBAAmB,CAAC,CAAA;IACvE,CAAC;AACL,CAAC,CAAA;AAnBY,QAAA,gBAAgB,oBAmB5B;AAED;;;;GAIG;AACI,MAAM,oBAAoB,GAAG,KAAK,EACrC,KAAY,EACZ,SAAiB,EACjB,eAAoC,EACvB,EAAE;IACf,IAAI,CAAC;QACD,MAAM,eAAe,EAAE,CAAA;QACvB,MAAM,KAAK,CAAC,IAAI,CAAC,8CAA2B,EAAE,SAAS,CAAC,CAAA;IAC5D,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACX,iBAAM,CAAC,KAAK,CAAC,gCAAgC,EAAE,GAAG,CAAC,CAAA;IACvD,CAAC;AACL,CAAC,CAAA;AAXY,QAAA,oBAAoB,wBAWhC;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACI,MAAM,mCAAmC,GAAG,KAAK,EACpD,KAAY,EACZ,cAAwB,EACS,EAAE;IACnC,MAAM,cAAc,GAA6B,EAAE,CAAA;IAEnD,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9B,iBAAM,CAAC,IAAI,CAAC,qEAAqE,CAAC,CAAA;QAClF,OAAO,cAAc,CAAA;IACzB,CAAC;IACD,IAAI,CAAC;QACD,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,KAAK,CAAC,sCAAmB,EAAE,GAAG,cAAc,CAAC,CAAA;QAEzE;;;WAGG;QAEH,IAAI,OAAO,CAAC,MAAM,KAAK,cAAc,CAAC,MAAM,EAAE,CAAC;YAC3C,iBAAM,CAAC,KAAK,CACR,wCAAwC,cAAc,CAAC,MAAM,CAAC,QAAQ,EAAE,SAAS,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,yCAAyC,CACtJ,CAAA;YACD,OAAO,cAAc,CAAA;QACzB,CAAC;QAED,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;YAC7B,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;gBACrC,yDAAyD;gBACzD,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAa,CAAA;gBACjD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;oBAC9B,iBAAM,CAAC,IAAI,CAAC,oCAAoC,cAAc,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAA;gBAC5F,CAAC;qBAAM,CAAC;oBACJ,cAAc,CAAC,cAAc,CAAC,KAAK,CAAE,CAAC,GAAG,WAAW,CAAA;gBACxD,CAAC;YACL,CAAC;iBAAM,CAAC;gBACJ,cAAc,CAAC,cAAc,CAAC,KAAK,CAAE,CAAC,GAAG,EAAE,CAAA;YAC/C,CAAC;QACL,CAAC,CAAC,CAAA;QACF,iBAAM,CAAC,IAAI,CAAC,kEAAkE,CAAC,CAAA;QAC/E,OAAO,cAAc,CAAA;IACzB,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACpB,iBAAM,CAAC,KAAK,CAAC,yDAAyD,EAAE,GAAG,CAAC,CAAA;QAC5E,OAAO,cAAc,CAAA;IACzB,CAAC;AACL,CAAC,CAAA;AA5CY,QAAA,mCAAmC,uCA4C/C;AACD;;;;;;;GAOG;AACI,MAAM,0BAA0B,GAAG,KAAK,EAAE,KAAY,EAAE,OAAiB,EAAqC,EAAE;IACnH,MAAM,aAAa,GAA6B,EAAE,CAAA;IAElD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,iBAAM,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAA;QACjE,OAAO,aAAa,CAAA;IACxB,CAAC;IAED,IAAI,CAAC;QACD,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,KAAK,CAAC,sCAAmB,EAAE,GAAG,OAAO,CAAC,CAAA;QAElE,IAAI,OAAO,CAAC,MAAM,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC;YACpC,iBAAM,CAAC,KAAK,CACR,wCAAwC,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,SAAS,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,gCAAgC,CACtI,CAAA;YACD,OAAO,aAAa,CAAA;QACxB,CAAC;QAED,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;YAC7B,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;gBACrC,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAa,CAAA;gBACjD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;oBAC9B,iBAAM,CAAC,IAAI,CAAC,4BAA4B,OAAO,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAA;gBAC7E,CAAC;qBAAM,CAAC;oBACJ,aAAa,CAAC,OAAO,CAAC,KAAK,CAAE,CAAC,GAAG,WAAW,CAAA;gBAChD,CAAC;YACL,CAAC;iBAAM,CAAC;gBACJ,aAAa,CAAC,OAAO,CAAC,KAAK,CAAE,CAAC,GAAG,EAAE,CAAA;YACvC,CAAC;QACL,CAAC,CAAC,CAAA;QACF,iBAAM,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAA;QAC9D,OAAO,aAAa,CAAA;IACxB,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACpB,iBAAM,CAAC,KAAK,CAAC,wCAAwC,EAAE,GAAG,CAAC,CAAA;QAC3D,OAAO,aAAa,CAAA;IACxB,CAAC;AACL,CAAC,CAAA;AApCY,QAAA,0BAA0B,8BAoCtC"}
|
|
@@ -28,15 +28,7 @@ export declare const setMarketDataCache: (redis: Redis, market: Market) => Promi
|
|
|
28
28
|
* @param marketType - Type of market (e.g., Fulltime)
|
|
29
29
|
* @audit @dev might look into the field, seems this operations could be simpler
|
|
30
30
|
*/
|
|
31
|
-
export declare const setCompletedMarketsKeysAndFields: (redis: Redis, gameUniqueIdentifier: string, marketType: MarketType) => Promise<void>;
|
|
32
|
-
/**
|
|
33
|
-
* Retrieves all completed markets for a specific market type
|
|
34
|
-
* @param redis - Redis client instance
|
|
35
|
-
* @param marketType - Type of market to retrieve
|
|
36
|
-
* @returns Array of game unique identifiers for completed markets
|
|
37
|
-
* @dev This function fetches all completed markets keys for a given market type
|
|
38
|
-
*/
|
|
39
|
-
export declare const getCompletedMarketsKeys: (redis: Redis, marketType: MarketType) => Promise<string[]>;
|
|
31
|
+
export declare const setCompletedMarketsKeysAndFields: (redis: Redis, gameUniqueIdentifier: string, marketType: MarketType, market: Market) => Promise<void>;
|
|
40
32
|
/**
|
|
41
33
|
* Retrieves completed markets data for multiple games
|
|
42
34
|
* @param redis - Redis client instance
|
|
@@ -45,13 +37,6 @@ export declare const getCompletedMarketsKeys: (redis: Redis, marketType: MarketT
|
|
|
45
37
|
* @returns Array of Market objects or null if none found
|
|
46
38
|
*/
|
|
47
39
|
export declare const getCompletedMarkets: (redis: Redis, marketType: MarketType) => Promise<Market[] | null>;
|
|
48
|
-
/**
|
|
49
|
-
* Removes completed markets keys and fields from Redis cache
|
|
50
|
-
* @param redis - Redis client instance
|
|
51
|
-
* @param gameUniqueIdentifier - Unique identifier for the game
|
|
52
|
-
* @param marketType - Type of market to remove
|
|
53
|
-
*/
|
|
54
|
-
export declare const removeCompletedMarketsKeysAndFields: (redis: Redis, gameUniqueIdentifier: string, marketType: MarketType) => Promise<void>;
|
|
55
40
|
/**
|
|
56
41
|
* Retrieves market data from cache for a specific game and market type
|
|
57
42
|
* @param redis - Redis client instance
|
|
@@ -67,14 +52,10 @@ export declare const getMarketDataCache: (redis: Redis, gameUniqueIdentifier: st
|
|
|
67
52
|
* @param marketTypes - Array of market types to retrieve
|
|
68
53
|
* @returns Map of game IDs to their markets with odds
|
|
69
54
|
*/
|
|
70
|
-
export declare const getMarketDataCacheWithOdds: (redis: Redis,
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
* @param gameUniqueIdentifier - Unique identifier for the game
|
|
75
|
-
* @param marketType - Type of market to invalidate
|
|
76
|
-
*/
|
|
77
|
-
export declare const invalidateMarketDataCache: (redis: Redis, gameUniqueIdentifier: string, marketType: MarketType) => Promise<void>;
|
|
55
|
+
export declare const getMarketDataCacheWithOdds: (redis: Redis, query: {
|
|
56
|
+
gameUniqueIdentifier: string;
|
|
57
|
+
marketType: MarketType;
|
|
58
|
+
}[]) => Promise<Record<string, MarketWithRelations[]>>;
|
|
78
59
|
/**
|
|
79
60
|
* Retrieves all odds from cache for a specific game and market type
|
|
80
61
|
* @param redis - Redis client instance
|
|
@@ -91,17 +72,8 @@ export declare const getOddsCache: (redis: Redis, gameUniqueIdentifier: string,
|
|
|
91
72
|
* @returns Latest Odds object or null if not found
|
|
92
73
|
*/
|
|
93
74
|
export declare const getLatestOddsCache: (redis: Redis, gameUniqueIdentifier: string, marketType: MarketType) => Promise<Odds | null>;
|
|
94
|
-
/**
|
|
95
|
-
* Synchronizes the market odds cache with the database
|
|
96
|
-
* @param redis - Redis client instance
|
|
97
|
-
* @param gameUniqueIdentifier - Unique identifier for the game
|
|
98
|
-
* @param marketType - Type of market
|
|
99
|
-
* @returns Boolean indicating success of synchronization
|
|
100
|
-
*/
|
|
101
|
-
export declare const syncMarketOddsCache: (redis: Redis, gameUniqueIdentifier: string, marketType: MarketType) => Promise<boolean>;
|
|
102
75
|
/**
|
|
103
76
|
* Invalidates the market odds cache for a specific game and market
|
|
104
|
-
* @param redis - Redis client instance
|
|
105
77
|
* @param gameUniqueIdentifier - Unique identifier for the game
|
|
106
78
|
* @param marketType - Type of market
|
|
107
79
|
*/
|
|
@@ -3,10 +3,11 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.addOddsCache = exports.invalidateMarketOddsCache = exports.
|
|
7
|
-
const
|
|
6
|
+
exports.addOddsCache = exports.invalidateMarketOddsCache = exports.getLatestOddsCache = exports.getOddsCache = exports.getMarketDataCacheWithOdds = exports.getMarketDataCache = exports.getCompletedMarkets = exports.setCompletedMarketsKeysAndFields = exports.setMarketDataCache = void 0;
|
|
7
|
+
const client_1 = require("@prisma/client");
|
|
8
8
|
const winston_1 = __importDefault(require("../../config/winston"));
|
|
9
9
|
const cache_keys_utils_1 = require("./cache.keys.utils");
|
|
10
|
+
const market_query_engine_1 = require("./market.query.engine");
|
|
10
11
|
/**
|
|
11
12
|
* A collection of functions to manage market and odds data in Redis cache
|
|
12
13
|
* These functions handle operations like setting, getting, and invalidating market data and odds
|
|
@@ -22,12 +23,7 @@ const cache_keys_utils_1 = require("./cache.keys.utils");
|
|
|
22
23
|
* @returns {Promise<void>} - Resolves when the operation is complete
|
|
23
24
|
*/
|
|
24
25
|
const setMarketDataCache = async (redis, market) => {
|
|
25
|
-
|
|
26
|
-
const field = market.marketType;
|
|
27
|
-
const success = (await redis.hset(key, field, JSON.stringify(market)));
|
|
28
|
-
if (success <= cache_keys_utils_1.RedisNumStates.failure) {
|
|
29
|
-
winston_1.default.error(`Failed to set market data cache for game ${market.objectId} and market type ${field}`);
|
|
30
|
-
}
|
|
26
|
+
(0, market_query_engine_1.updateMarketCache)(redis, market.levrGameObjectId, market.marketType, market);
|
|
31
27
|
};
|
|
32
28
|
exports.setMarketDataCache = setMarketDataCache;
|
|
33
29
|
/**
|
|
@@ -42,28 +38,10 @@ exports.setMarketDataCache = setMarketDataCache;
|
|
|
42
38
|
* @param marketType - Type of market (e.g., Fulltime)
|
|
43
39
|
* @audit @dev might look into the field, seems this operations could be simpler
|
|
44
40
|
*/
|
|
45
|
-
const setCompletedMarketsKeysAndFields = async (redis, gameUniqueIdentifier, marketType) => {
|
|
46
|
-
|
|
47
|
-
const field = (0, cache_keys_utils_1.getCompletedMarketsField)(gameUniqueIdentifier, marketType);
|
|
48
|
-
const success = (await redis.hset(key, field, gameUniqueIdentifier));
|
|
49
|
-
if (success > cache_keys_utils_1.RedisNumStates.failure) {
|
|
50
|
-
winston_1.default.error(`Failed to set completed markets key for game ${gameUniqueIdentifier} and market type ${marketType}`);
|
|
51
|
-
}
|
|
41
|
+
const setCompletedMarketsKeysAndFields = async (redis, gameUniqueIdentifier, marketType, market) => {
|
|
42
|
+
await (0, market_query_engine_1.updateMarketCache)(redis, gameUniqueIdentifier, marketType, market);
|
|
52
43
|
};
|
|
53
44
|
exports.setCompletedMarketsKeysAndFields = setCompletedMarketsKeysAndFields;
|
|
54
|
-
/**
|
|
55
|
-
* Retrieves all completed markets for a specific market type
|
|
56
|
-
* @param redis - Redis client instance
|
|
57
|
-
* @param marketType - Type of market to retrieve
|
|
58
|
-
* @returns Array of game unique identifiers for completed markets
|
|
59
|
-
* @dev This function fetches all completed markets keys for a given market type
|
|
60
|
-
*/
|
|
61
|
-
const getCompletedMarketsKeys = async (redis, marketType) => {
|
|
62
|
-
const key = (0, cache_keys_utils_1.getCompletedMarketsKey)(marketType);
|
|
63
|
-
const completedMarketsFields = await redis.hgetall(key);
|
|
64
|
-
return Object.values(completedMarketsFields).filter((value) => value !== "null" && value !== "undefined");
|
|
65
|
-
};
|
|
66
|
-
exports.getCompletedMarketsKeys = getCompletedMarketsKeys;
|
|
67
45
|
/**
|
|
68
46
|
* Retrieves completed markets data for multiple games
|
|
69
47
|
* @param redis - Redis client instance
|
|
@@ -72,41 +50,13 @@ exports.getCompletedMarketsKeys = getCompletedMarketsKeys;
|
|
|
72
50
|
* @returns Array of Market objects or null if none found
|
|
73
51
|
*/
|
|
74
52
|
const getCompletedMarkets = async (redis, marketType) => {
|
|
75
|
-
const
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
const key = (0, cache_keys_utils_1.getMarketOddsByGameUniqueIdKeyAndMarketType)(identifier);
|
|
79
|
-
pipeline.hget(key, marketType);
|
|
80
|
-
});
|
|
81
|
-
const values = await pipeline.exec();
|
|
82
|
-
if (!values || values.length === 0)
|
|
83
|
-
return null;
|
|
84
|
-
const completedMarkets = [];
|
|
85
|
-
values.forEach((data) => {
|
|
86
|
-
const [error, value] = data;
|
|
87
|
-
if (!error && value) {
|
|
88
|
-
const market = JSON.parse(value);
|
|
89
|
-
completedMarkets.push(market);
|
|
90
|
-
}
|
|
53
|
+
const results = await (0, market_query_engine_1.searchMarkets)(redis, {
|
|
54
|
+
status: client_1.MarketStatus.Closed,
|
|
55
|
+
marketType: marketType,
|
|
91
56
|
});
|
|
92
|
-
return
|
|
57
|
+
return results.results.length > 0 ? results.results : null;
|
|
93
58
|
};
|
|
94
59
|
exports.getCompletedMarkets = getCompletedMarkets;
|
|
95
|
-
/**
|
|
96
|
-
* Removes completed markets keys and fields from Redis cache
|
|
97
|
-
* @param redis - Redis client instance
|
|
98
|
-
* @param gameUniqueIdentifier - Unique identifier for the game
|
|
99
|
-
* @param marketType - Type of market to remove
|
|
100
|
-
*/
|
|
101
|
-
const removeCompletedMarketsKeysAndFields = async (redis, gameUniqueIdentifier, marketType) => {
|
|
102
|
-
const key = (0, cache_keys_utils_1.getCompletedMarketsKey)(marketType);
|
|
103
|
-
const field = (0, cache_keys_utils_1.getCompletedMarketsField)(gameUniqueIdentifier, marketType);
|
|
104
|
-
const success = (await redis.hdel(key, field));
|
|
105
|
-
if (success > cache_keys_utils_1.RedisNumStates.success) {
|
|
106
|
-
winston_1.default.error(`Failed to remove completed markets key for game ${gameUniqueIdentifier} and market type ${marketType}`);
|
|
107
|
-
}
|
|
108
|
-
};
|
|
109
|
-
exports.removeCompletedMarketsKeysAndFields = removeCompletedMarketsKeysAndFields;
|
|
110
60
|
/**
|
|
111
61
|
* Retrieves market data from cache for a specific game and market type
|
|
112
62
|
* @param redis - Redis client instance
|
|
@@ -129,50 +79,11 @@ exports.getMarketDataCache = getMarketDataCache;
|
|
|
129
79
|
* @param marketTypes - Array of market types to retrieve
|
|
130
80
|
* @returns Map of game IDs to their markets with odds
|
|
131
81
|
*/
|
|
132
|
-
const getMarketDataCacheWithOdds = async (redis,
|
|
133
|
-
const
|
|
134
|
-
|
|
135
|
-
const key = (0, cache_keys_utils_1.getMarketOddsByGameUniqueIdKeyAndMarketType)(gameUniqueIdentifier);
|
|
136
|
-
marketTypes.forEach((marketType) => {
|
|
137
|
-
pipeline.hget(key, marketType);
|
|
138
|
-
});
|
|
139
|
-
});
|
|
140
|
-
const oddsKey = cache_keys_utils_1.gameToMarketOfOddsInCache;
|
|
141
|
-
const oddsFields = gameUniqueIdentifiers.flatMap((gameUniqueIdentifier) => marketTypes.map((marketType) => (0, cache_keys_utils_1.getMarketOddsField)(gameUniqueIdentifier, marketType)));
|
|
142
|
-
const marketOdds = await redis.hmget(oddsKey, ...oddsFields);
|
|
143
|
-
const values = await pipeline.exec();
|
|
144
|
-
if (!values || values.length === 0)
|
|
145
|
-
return null;
|
|
146
|
-
const marketsMap = new Map();
|
|
147
|
-
values.forEach((data, index) => {
|
|
148
|
-
const [error, value] = data;
|
|
149
|
-
if (!error && value) {
|
|
150
|
-
const market = JSON.parse(value);
|
|
151
|
-
const odds = marketOdds[index] ? JSON.parse(marketOdds[index]) : [];
|
|
152
|
-
const gameId = market.levrGameObjectId;
|
|
153
|
-
if (!marketsMap.has(gameId)) {
|
|
154
|
-
marketsMap.set(gameId, []);
|
|
155
|
-
}
|
|
156
|
-
marketsMap.get(gameId)?.push({ ...market, odds });
|
|
157
|
-
}
|
|
158
|
-
});
|
|
159
|
-
return marketsMap;
|
|
82
|
+
const getMarketDataCacheWithOdds = async (redis, query) => {
|
|
83
|
+
const results = await (0, market_query_engine_1.searchMultipleMarketsWithOdds)(redis, query);
|
|
84
|
+
return results.results;
|
|
160
85
|
};
|
|
161
86
|
exports.getMarketDataCacheWithOdds = getMarketDataCacheWithOdds;
|
|
162
|
-
/**
|
|
163
|
-
* Invalidates market data in cache for a specific game and market type
|
|
164
|
-
* @param redis - Redis client instance
|
|
165
|
-
* @param gameUniqueIdentifier - Unique identifier for the game
|
|
166
|
-
* @param marketType - Type of market to invalidate
|
|
167
|
-
*/
|
|
168
|
-
const invalidateMarketDataCache = async (redis, gameUniqueIdentifier, marketType) => {
|
|
169
|
-
const key = (0, cache_keys_utils_1.getMarketOddsByGameUniqueIdKeyAndMarketType)(gameUniqueIdentifier);
|
|
170
|
-
const success = (await redis.hdel(key, marketType));
|
|
171
|
-
if (success <= cache_keys_utils_1.RedisNumStates.failure) {
|
|
172
|
-
winston_1.default.error(`Failed to invalidate market data cache for game ${gameUniqueIdentifier} and market type ${marketType}`);
|
|
173
|
-
}
|
|
174
|
-
};
|
|
175
|
-
exports.invalidateMarketDataCache = invalidateMarketDataCache;
|
|
176
87
|
/**
|
|
177
88
|
* Retrieves all odds from cache for a specific game and market type
|
|
178
89
|
* @param redis - Redis client instance
|
|
@@ -181,11 +92,8 @@ exports.invalidateMarketDataCache = invalidateMarketDataCache;
|
|
|
181
92
|
* @returns Array of Odds objects
|
|
182
93
|
*/
|
|
183
94
|
const getOddsCache = async (redis, gameUniqueIdentifier, marketType) => {
|
|
184
|
-
const
|
|
185
|
-
|
|
186
|
-
const valueListJson = await redis.hget(key, field);
|
|
187
|
-
const odds = valueListJson ? JSON.parse(valueListJson) : [];
|
|
188
|
-
return odds;
|
|
95
|
+
const data = await (0, market_query_engine_1.getOddsList)(redis, gameUniqueIdentifier, marketType);
|
|
96
|
+
return data;
|
|
189
97
|
};
|
|
190
98
|
exports.getOddsCache = getOddsCache;
|
|
191
99
|
/**
|
|
@@ -196,47 +104,11 @@ exports.getOddsCache = getOddsCache;
|
|
|
196
104
|
* @returns Latest Odds object or null if not found
|
|
197
105
|
*/
|
|
198
106
|
const getLatestOddsCache = async (redis, gameUniqueIdentifier, marketType) => {
|
|
199
|
-
|
|
200
|
-
const key = cache_keys_utils_1.gameToMarketOfOddsInCache;
|
|
201
|
-
const field = (0, cache_keys_utils_1.getMarketOddsField)(gameUniqueIdentifier, marketType);
|
|
202
|
-
const valueList = await redis.hget(key, field);
|
|
203
|
-
const parsedList = valueList ? JSON.parse(valueList) : null;
|
|
204
|
-
const parseResult = parsedList ? core_1.OddsSchema.safeParse(parsedList[parsedList.length - 1]) : null;
|
|
205
|
-
return parseResult?.success ? parseResult.data : null;
|
|
206
|
-
}
|
|
207
|
-
catch (err) {
|
|
208
|
-
winston_1.default.error("error getting latest odds from cache", err);
|
|
209
|
-
return null;
|
|
210
|
-
}
|
|
107
|
+
return await (0, market_query_engine_1.getLatestOdds)(redis, gameUniqueIdentifier, marketType);
|
|
211
108
|
};
|
|
212
109
|
exports.getLatestOddsCache = getLatestOddsCache;
|
|
213
|
-
/**
|
|
214
|
-
* Synchronizes the market odds cache with the database
|
|
215
|
-
* @param redis - Redis client instance
|
|
216
|
-
* @param gameUniqueIdentifier - Unique identifier for the game
|
|
217
|
-
* @param marketType - Type of market
|
|
218
|
-
* @returns Boolean indicating success of synchronization
|
|
219
|
-
*/
|
|
220
|
-
const syncMarketOddsCache = async (redis, gameUniqueIdentifier, marketType) => {
|
|
221
|
-
const key = cache_keys_utils_1.marketOddsKey;
|
|
222
|
-
const field = (0, cache_keys_utils_1.getMarketOddsField)(gameUniqueIdentifier, marketType);
|
|
223
|
-
const marketOdds = await redis.hget(key, field);
|
|
224
|
-
if (!marketOdds)
|
|
225
|
-
return false;
|
|
226
|
-
try {
|
|
227
|
-
const data = JSON.parse(marketOdds);
|
|
228
|
-
winston_1.default.info(`${JSON.stringify(data)}, market odds data to be synced with database`);
|
|
229
|
-
return true;
|
|
230
|
-
}
|
|
231
|
-
catch (err) {
|
|
232
|
-
winston_1.default.error("error syncing market odds cache", err);
|
|
233
|
-
return false;
|
|
234
|
-
}
|
|
235
|
-
};
|
|
236
|
-
exports.syncMarketOddsCache = syncMarketOddsCache;
|
|
237
110
|
/**
|
|
238
111
|
* Invalidates the market odds cache for a specific game and market
|
|
239
|
-
* @param redis - Redis client instance
|
|
240
112
|
* @param gameUniqueIdentifier - Unique identifier for the game
|
|
241
113
|
* @param marketType - Type of market
|
|
242
114
|
*/
|
|
@@ -257,23 +129,7 @@ exports.invalidateMarketOddsCache = invalidateMarketOddsCache;
|
|
|
257
129
|
* @param odds - Array of new odds to add
|
|
258
130
|
*/
|
|
259
131
|
const addOddsCache = async (redis, gameUniqueIdentifier, marketType, odds) => {
|
|
260
|
-
|
|
261
|
-
const key = cache_keys_utils_1.gameToMarketOfOddsInCache;
|
|
262
|
-
const field = (0, cache_keys_utils_1.getMarketOddsField)(gameUniqueIdentifier, marketType);
|
|
263
|
-
const existingValue = await redis.hget(key, field);
|
|
264
|
-
//'{}'
|
|
265
|
-
const parsedOdds = existingValue ? JSON.parse(existingValue) : [];
|
|
266
|
-
for (const line of odds) {
|
|
267
|
-
parsedOdds.push(line);
|
|
268
|
-
}
|
|
269
|
-
const success = (await redis.hset(key, field, JSON.stringify(parsedOdds)));
|
|
270
|
-
if (success <= cache_keys_utils_1.RedisNumStates.failure) {
|
|
271
|
-
winston_1.default.error(`Failed to add odds to cache for game ${gameUniqueIdentifier} and market type ${marketType}`);
|
|
272
|
-
}
|
|
273
|
-
}
|
|
274
|
-
catch (err) {
|
|
275
|
-
winston_1.default.error("error adding odds to cache", err);
|
|
276
|
-
}
|
|
132
|
+
await (0, market_query_engine_1.addOddsToOddsCache)(redis, gameUniqueIdentifier, marketType, odds);
|
|
277
133
|
};
|
|
278
134
|
exports.addOddsCache = addOddsCache;
|
|
279
135
|
//# sourceMappingURL=market.cache.service.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"market.cache.service.js","sourceRoot":"","sources":["../../../../src/server/oracle/redis-cache-manager/market.cache.service.ts"],"names":[],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"market.cache.service.js","sourceRoot":"","sources":["../../../../src/server/oracle/redis-cache-manager/market.cache.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import { Market, MarketStatus, MarketType, Odds } from "@prisma/client";
|
|
2
|
+
import { Redis } from "ioredis";
|
|
3
|
+
import { LevrChain, MarketWithRelations } from "../../../core";
|
|
4
|
+
/**
|
|
5
|
+
* Redis Query Engine using RediSearch
|
|
6
|
+
* Provides advanced querying capabilities for markets and odds using Prisma types
|
|
7
|
+
*/
|
|
8
|
+
export interface SearchQuery {
|
|
9
|
+
marketType?: MarketType;
|
|
10
|
+
levrGameObjectId?: string;
|
|
11
|
+
status?: MarketStatus;
|
|
12
|
+
timeRange?: {
|
|
13
|
+
from: number;
|
|
14
|
+
to: number;
|
|
15
|
+
};
|
|
16
|
+
chainId?: LevrChain;
|
|
17
|
+
limit?: number;
|
|
18
|
+
offset?: number;
|
|
19
|
+
}
|
|
20
|
+
export interface SearchResult<T> {
|
|
21
|
+
total: number;
|
|
22
|
+
results: T[];
|
|
23
|
+
duration: number;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Add a new market to cache with RediSearch indexing
|
|
27
|
+
* @param redis - Redis client instance
|
|
28
|
+
* @param gameUniqueId - Unique game identifier
|
|
29
|
+
* @param market - Market object to cache
|
|
30
|
+
*/
|
|
31
|
+
export declare const updateMarketCache: (redis: Redis, gameUniqueId: string, marketType: MarketType, market: Market) => Promise<void>;
|
|
32
|
+
/**
|
|
33
|
+
* Creates a RediSearch index for odds lists by market identifiers
|
|
34
|
+
* @param redis - Redis client instance
|
|
35
|
+
*/
|
|
36
|
+
export declare const createOddsIndex: (redis: Redis) => Promise<void>;
|
|
37
|
+
/**
|
|
38
|
+
* Search markets using RediSearch query engine
|
|
39
|
+
* @param redis - Redis client instance
|
|
40
|
+
* @param query - Search query parameters
|
|
41
|
+
* @returns Paginated search results with Prisma Market type
|
|
42
|
+
*/
|
|
43
|
+
export declare const searchMarkets: (redis: Redis, query: SearchQuery) => Promise<SearchResult<Market>>;
|
|
44
|
+
/**
|
|
45
|
+
* Search markets with their associated odds
|
|
46
|
+
* @param redis - Redis client instance
|
|
47
|
+
* @param query - Search query parameters
|
|
48
|
+
* @returns Search results with markets and their odds
|
|
49
|
+
*/
|
|
50
|
+
export declare const searchMarketsWithOdds: (redis: Redis, query: SearchQuery) => Promise<SearchResult<MarketWithRelations>>;
|
|
51
|
+
/**
|
|
52
|
+
* Search multiple markets with their associated odds using multiple queries
|
|
53
|
+
* @param redis - Redis client instance
|
|
54
|
+
* @param queries - Array of search query parameters
|
|
55
|
+
* @returns Combined search results with markets and their odds
|
|
56
|
+
*/
|
|
57
|
+
export declare const searchMultipleMarketsWithOdds: (redis: Redis, queries: SearchQuery[]) => Promise<{
|
|
58
|
+
total: number;
|
|
59
|
+
results: Record<string, MarketWithRelations[]>;
|
|
60
|
+
duration: number;
|
|
61
|
+
}>;
|
|
62
|
+
/**
|
|
63
|
+
* Add odds to cache as a simple JSON list with searchable metadata
|
|
64
|
+
* @param redis - Redis client instance
|
|
65
|
+
* @param gameUniqueId - Unique game identifier
|
|
66
|
+
* @param marketType - Market type
|
|
67
|
+
* @param odds - Array of Odds objects to cache
|
|
68
|
+
*/
|
|
69
|
+
export declare const addOddsToOddsCache: (redis: Redis, gameUniqueId: string, marketType: MarketType, odds: Odds[]) => Promise<void>;
|
|
70
|
+
/**
|
|
71
|
+
* Get all odds for a specific game and market type with pagination
|
|
72
|
+
* @param redis - Redis client instance
|
|
73
|
+
* @param gameUniqueId - Unique game identifier
|
|
74
|
+
* @param marketType - Market type
|
|
75
|
+
* @param limit - Number of latest odds to return (from the end)
|
|
76
|
+
* @returns Array of Odds objects
|
|
77
|
+
*/
|
|
78
|
+
export declare const getOddsList: (redis: Redis, gameUniqueId: string, marketType: MarketType, limit?: number) => Promise<Odds[]>;
|
|
79
|
+
/**
|
|
80
|
+
* Search odds lists by market identifiers using RediSearch
|
|
81
|
+
* @param redis - Redis client instance
|
|
82
|
+
* @param gameMarketId - Game market ID to search
|
|
83
|
+
* @param marketType - Market type to search
|
|
84
|
+
* @param levrGameObjectId - Levr game object ID to search
|
|
85
|
+
* @returns Array of odds lists matching the query
|
|
86
|
+
*/
|
|
87
|
+
export declare const searchOddsLists: (redis: Redis, gameMarketId?: string, marketType?: MarketType, levrGameObjectId?: string) => Promise<Odds[][]>;
|
|
88
|
+
/**
|
|
89
|
+
* Get the latest odds for a specific game and market type
|
|
90
|
+
* @param redis - Redis client instance
|
|
91
|
+
* @param gameUniqueId - Unique game identifier
|
|
92
|
+
* @param marketType - Market type
|
|
93
|
+
* @returns Latest Odds object or null if not found
|
|
94
|
+
*/
|
|
95
|
+
export declare const getLatestOdds: (redis: Redis, gameUniqueId: string, marketType: MarketType) => Promise<Odds | null>;
|
|
96
|
+
/**
|
|
97
|
+
* Get the latest odds with its related market
|
|
98
|
+
* @param redis - Redis client instance
|
|
99
|
+
* @param gameUniqueId - Unique game identifier
|
|
100
|
+
* @param marketType - Market type
|
|
101
|
+
* @returns Odds with related market or null if not found
|
|
102
|
+
*/
|
|
103
|
+
export declare const getLatestOddsWithMarket: (redis: Redis, gameUniqueId: string, marketType: MarketType) => Promise<(Odds & {
|
|
104
|
+
market?: Market;
|
|
105
|
+
}) | null>;
|
|
106
|
+
/**
|
|
107
|
+
* Drop all search indices
|
|
108
|
+
* @param redis - Redis client instance
|
|
109
|
+
*/
|
|
110
|
+
export declare const dropAllIndices: (redis: Redis) => Promise<void>;
|
|
@@ -0,0 +1,413 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.dropAllIndices = exports.getLatestOddsWithMarket = exports.getLatestOdds = exports.searchOddsLists = exports.getOddsList = exports.addOddsToOddsCache = exports.searchMultipleMarketsWithOdds = exports.searchMarketsWithOdds = exports.searchMarkets = exports.createOddsIndex = exports.updateMarketCache = void 0;
|
|
7
|
+
const winston_1 = __importDefault(require("../../config/winston"));
|
|
8
|
+
const cache_keys_utils_1 = require("./cache.keys.utils");
|
|
9
|
+
/**
|
|
10
|
+
* Creates a RediSearch index with dynamic parameters
|
|
11
|
+
* @param redis - Redis client instance
|
|
12
|
+
* @param indexName - Name of the index to create
|
|
13
|
+
* @param indexParams - Index creation parameters (SCHEMA, PREFIX, etc.)
|
|
14
|
+
*/
|
|
15
|
+
const createIndex = async (redis, indexName, indexParams) => {
|
|
16
|
+
try {
|
|
17
|
+
const indexExists = await redis.call("FT.INFO", indexName).catch(() => null);
|
|
18
|
+
if (indexExists) {
|
|
19
|
+
winston_1.default.info(`Index ${indexName} already exists`);
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
await redis.call("FT.CREATE", indexName, ...indexParams);
|
|
23
|
+
winston_1.default.info(`Created index: ${indexName}`);
|
|
24
|
+
}
|
|
25
|
+
catch (error) {
|
|
26
|
+
winston_1.default.error(`Error creating index ${indexName}`, error);
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
/**
|
|
30
|
+
* Add a new market to cache with RediSearch indexing
|
|
31
|
+
* @param redis - Redis client instance
|
|
32
|
+
* @param gameUniqueId - Unique game identifier
|
|
33
|
+
* @param market - Market object to cache
|
|
34
|
+
*/
|
|
35
|
+
const updateMarketCache = async (redis, gameUniqueId, marketType, market) => {
|
|
36
|
+
const key = (0, cache_keys_utils_1.getMarketKeyWithGameUniqueIdMarketType)(gameUniqueId, marketType);
|
|
37
|
+
await Promise.all([
|
|
38
|
+
redis.hset(key, market),
|
|
39
|
+
createIndex(redis, cache_keys_utils_1.market_index_name, [
|
|
40
|
+
"ON",
|
|
41
|
+
"HASH",
|
|
42
|
+
"PREFIX",
|
|
43
|
+
"1",
|
|
44
|
+
"markets_unique_id:",
|
|
45
|
+
"SCHEMA",
|
|
46
|
+
"levrGameObjectId",
|
|
47
|
+
"TEXT",
|
|
48
|
+
"marketType",
|
|
49
|
+
"TAG",
|
|
50
|
+
"objectId",
|
|
51
|
+
"TEXT",
|
|
52
|
+
"createdAt",
|
|
53
|
+
"NUMERIC",
|
|
54
|
+
"updatedAt",
|
|
55
|
+
"NUMERIC",
|
|
56
|
+
"chainId",
|
|
57
|
+
"NUMERIC",
|
|
58
|
+
"status",
|
|
59
|
+
"TAG",
|
|
60
|
+
"settledAt",
|
|
61
|
+
"NUMERIC",
|
|
62
|
+
]),
|
|
63
|
+
]);
|
|
64
|
+
winston_1.default.info(`Added market to cache: ${key}`);
|
|
65
|
+
};
|
|
66
|
+
exports.updateMarketCache = updateMarketCache;
|
|
67
|
+
/**
|
|
68
|
+
* Creates a RediSearch index for odds lists by market identifiers
|
|
69
|
+
* @param redis - Redis client instance
|
|
70
|
+
*/
|
|
71
|
+
const createOddsIndex = async (redis) => {
|
|
72
|
+
try {
|
|
73
|
+
const indexName = "odds_list_idx";
|
|
74
|
+
const indexExists = await redis.call("FT.INFO", indexName).catch(() => null);
|
|
75
|
+
if (indexExists) {
|
|
76
|
+
winston_1.default.info("Odds list index already exists");
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
await redis.call("FT.CREATE", indexName, "ON", "HASH", "PREFIX", "1", "game_to_market_ids_of_odds_in_cache_", "SCHEMA", "gameMarketId", "TEXT", "marketType", "TAG", "levrGameObjectId", "TEXT");
|
|
80
|
+
winston_1.default.info(`Created odds list index: ${indexName}`);
|
|
81
|
+
}
|
|
82
|
+
catch (error) {
|
|
83
|
+
winston_1.default.error("Error creating odds list index", error);
|
|
84
|
+
}
|
|
85
|
+
};
|
|
86
|
+
exports.createOddsIndex = createOddsIndex;
|
|
87
|
+
/**
|
|
88
|
+
* Search markets using RediSearch query engine
|
|
89
|
+
* @param redis - Redis client instance
|
|
90
|
+
* @param query - Search query parameters
|
|
91
|
+
* @returns Paginated search results with Prisma Market type
|
|
92
|
+
*/
|
|
93
|
+
const searchMarkets = async (redis, query) => {
|
|
94
|
+
try {
|
|
95
|
+
const startTime = Date.now();
|
|
96
|
+
const indexName = cache_keys_utils_1.market_index_name;
|
|
97
|
+
const offset = query.offset || 0;
|
|
98
|
+
const limit = query.limit || 100;
|
|
99
|
+
const queryParts = [];
|
|
100
|
+
if (query.levrGameObjectId) {
|
|
101
|
+
queryParts.push(`@levrGameObjectId:${query.levrGameObjectId}`);
|
|
102
|
+
}
|
|
103
|
+
if (query.marketType) {
|
|
104
|
+
queryParts.push(`@marketType:{${query.marketType}}`);
|
|
105
|
+
}
|
|
106
|
+
if (query.status) {
|
|
107
|
+
queryParts.push(`@status:{${query.status}}`);
|
|
108
|
+
}
|
|
109
|
+
const finalQuery = queryParts.length > 0 ? queryParts.join(" ") : "*";
|
|
110
|
+
const result = await redis.call("FT.SEARCH", indexName, finalQuery, "LIMIT", offset, limit);
|
|
111
|
+
const [totalCount, ...items] = result;
|
|
112
|
+
const duration = Date.now() - startTime;
|
|
113
|
+
const parsedResults = [];
|
|
114
|
+
for (let i = 0; i < items.length; i += 2) {
|
|
115
|
+
const doc = items[i + 1];
|
|
116
|
+
if (Array.isArray(doc)) {
|
|
117
|
+
const obj = {};
|
|
118
|
+
for (let j = 0; j < doc.length; j += 2) {
|
|
119
|
+
obj[doc[j]] = doc[j + 1];
|
|
120
|
+
}
|
|
121
|
+
parsedResults.push(obj);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
return {
|
|
125
|
+
total: totalCount,
|
|
126
|
+
results: parsedResults,
|
|
127
|
+
duration,
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
catch (error) {
|
|
131
|
+
winston_1.default.error("Error searching markets", error);
|
|
132
|
+
return {
|
|
133
|
+
total: 0,
|
|
134
|
+
results: [],
|
|
135
|
+
duration: 0,
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
};
|
|
139
|
+
exports.searchMarkets = searchMarkets;
|
|
140
|
+
/**
|
|
141
|
+
* Search markets with their associated odds
|
|
142
|
+
* @param redis - Redis client instance
|
|
143
|
+
* @param query - Search query parameters
|
|
144
|
+
* @returns Search results with markets and their odds
|
|
145
|
+
*/
|
|
146
|
+
const searchMarketsWithOdds = async (redis, query) => {
|
|
147
|
+
try {
|
|
148
|
+
const startTime = Date.now();
|
|
149
|
+
// Get markets from search
|
|
150
|
+
const marketResults = await (0, exports.searchMarkets)(redis, query);
|
|
151
|
+
// Enrich each market with its odds
|
|
152
|
+
const marketsWithOdds = await Promise.all(marketResults.results.map(async (market) => {
|
|
153
|
+
const odds = await (0, exports.getOddsList)(redis, market.levrGameObjectId, market.marketType);
|
|
154
|
+
return {
|
|
155
|
+
...market,
|
|
156
|
+
odds,
|
|
157
|
+
};
|
|
158
|
+
}));
|
|
159
|
+
const duration = Date.now() - startTime;
|
|
160
|
+
return {
|
|
161
|
+
total: marketResults.total,
|
|
162
|
+
results: marketsWithOdds,
|
|
163
|
+
duration,
|
|
164
|
+
};
|
|
165
|
+
}
|
|
166
|
+
catch (error) {
|
|
167
|
+
winston_1.default.error("Error searching markets with odds", error);
|
|
168
|
+
return {
|
|
169
|
+
total: 0,
|
|
170
|
+
results: [],
|
|
171
|
+
duration: 0,
|
|
172
|
+
};
|
|
173
|
+
}
|
|
174
|
+
};
|
|
175
|
+
exports.searchMarketsWithOdds = searchMarketsWithOdds;
|
|
176
|
+
/**
|
|
177
|
+
* Search multiple markets with their associated odds using multiple queries
|
|
178
|
+
* @param redis - Redis client instance
|
|
179
|
+
* @param queries - Array of search query parameters
|
|
180
|
+
* @returns Combined search results with markets and their odds
|
|
181
|
+
*/
|
|
182
|
+
const searchMultipleMarketsWithOdds = async (redis, queries) => {
|
|
183
|
+
try {
|
|
184
|
+
const startTime = Date.now();
|
|
185
|
+
const allResults = {};
|
|
186
|
+
let totalCount = 0;
|
|
187
|
+
// Execute each query and collect results
|
|
188
|
+
for (const query of queries) {
|
|
189
|
+
const marketResults = await (0, exports.searchMarkets)(redis, query);
|
|
190
|
+
totalCount += marketResults.total;
|
|
191
|
+
// Enrich each market with its odds
|
|
192
|
+
const marketsWithOdds = await Promise.all(marketResults.results.map(async (market) => {
|
|
193
|
+
const odds = await (0, exports.getOddsList)(redis, market.levrGameObjectId, market.marketType);
|
|
194
|
+
return {
|
|
195
|
+
...market,
|
|
196
|
+
odds,
|
|
197
|
+
};
|
|
198
|
+
}));
|
|
199
|
+
marketsWithOdds.forEach((market) => {
|
|
200
|
+
if (market.levrGameObjectId) {
|
|
201
|
+
if (!allResults[market.levrGameObjectId]) {
|
|
202
|
+
allResults[market.levrGameObjectId] = [];
|
|
203
|
+
}
|
|
204
|
+
allResults[market.levrGameObjectId]?.push(market);
|
|
205
|
+
}
|
|
206
|
+
});
|
|
207
|
+
}
|
|
208
|
+
const duration = Date.now() - startTime;
|
|
209
|
+
return {
|
|
210
|
+
total: totalCount,
|
|
211
|
+
results: allResults,
|
|
212
|
+
duration,
|
|
213
|
+
};
|
|
214
|
+
}
|
|
215
|
+
catch (error) {
|
|
216
|
+
winston_1.default.error("Error searching multiple markets with odds", error);
|
|
217
|
+
return {
|
|
218
|
+
total: 0,
|
|
219
|
+
results: {},
|
|
220
|
+
duration: 0,
|
|
221
|
+
};
|
|
222
|
+
}
|
|
223
|
+
};
|
|
224
|
+
exports.searchMultipleMarketsWithOdds = searchMultipleMarketsWithOdds;
|
|
225
|
+
/**
|
|
226
|
+
* Add odds to cache as a simple JSON list with searchable metadata
|
|
227
|
+
* @param redis - Redis client instance
|
|
228
|
+
* @param gameUniqueId - Unique game identifier
|
|
229
|
+
* @param marketType - Market type
|
|
230
|
+
* @param odds - Array of Odds objects to cache
|
|
231
|
+
*/
|
|
232
|
+
const addOddsToOddsCache = async (redis, gameUniqueId, marketType, odds) => {
|
|
233
|
+
try {
|
|
234
|
+
const key = cache_keys_utils_1.gameToMarketOfOddsInCache;
|
|
235
|
+
const field = (0, cache_keys_utils_1.getMarketOddsField)(gameUniqueId, marketType);
|
|
236
|
+
// Get existing odds if any
|
|
237
|
+
const existingValue = await redis.hget(key, field);
|
|
238
|
+
const existingOdds = existingValue ? JSON.parse(existingValue) : [];
|
|
239
|
+
// Append new odds to existing list
|
|
240
|
+
const allOdds = [...existingOdds, ...odds];
|
|
241
|
+
// Store the entire list as JSON and add indexable metadata
|
|
242
|
+
const gameMarketId = odds[0]?.gameMarketId || "";
|
|
243
|
+
await Promise.all([
|
|
244
|
+
redis.hset(key, field, JSON.stringify(allOdds)),
|
|
245
|
+
redis.hset(key, "gameMarketId", gameMarketId),
|
|
246
|
+
redis.hset(key, "marketType", marketType),
|
|
247
|
+
redis.hset(key, "levrGameObjectId", gameUniqueId),
|
|
248
|
+
(0, exports.createOddsIndex)(redis),
|
|
249
|
+
]);
|
|
250
|
+
winston_1.default.info(`Added ${odds.length} odds to cache: ${key}:${field}`);
|
|
251
|
+
}
|
|
252
|
+
catch (error) {
|
|
253
|
+
winston_1.default.error("Error adding odds to cache", error);
|
|
254
|
+
throw error;
|
|
255
|
+
}
|
|
256
|
+
};
|
|
257
|
+
exports.addOddsToOddsCache = addOddsToOddsCache;
|
|
258
|
+
/**
|
|
259
|
+
* Get all odds for a specific game and market type with pagination
|
|
260
|
+
* @param redis - Redis client instance
|
|
261
|
+
* @param gameUniqueId - Unique game identifier
|
|
262
|
+
* @param marketType - Market type
|
|
263
|
+
* @param limit - Number of latest odds to return (from the end)
|
|
264
|
+
* @returns Array of Odds objects
|
|
265
|
+
*/
|
|
266
|
+
const getOddsList = async (redis, gameUniqueId, marketType, limit = 10) => {
|
|
267
|
+
try {
|
|
268
|
+
const key = cache_keys_utils_1.gameToMarketOfOddsInCache;
|
|
269
|
+
const field = (0, cache_keys_utils_1.getMarketOddsField)(gameUniqueId, marketType);
|
|
270
|
+
const value = await redis.hget(key, field);
|
|
271
|
+
if (!value) {
|
|
272
|
+
return [];
|
|
273
|
+
}
|
|
274
|
+
const oddsList = JSON.parse(value);
|
|
275
|
+
// Return the last N odds entries
|
|
276
|
+
const startIndex = Math.max(0, oddsList.length - limit);
|
|
277
|
+
return oddsList.slice(startIndex);
|
|
278
|
+
}
|
|
279
|
+
catch (error) {
|
|
280
|
+
winston_1.default.error("Error getting odds list", error);
|
|
281
|
+
return [];
|
|
282
|
+
}
|
|
283
|
+
};
|
|
284
|
+
exports.getOddsList = getOddsList;
|
|
285
|
+
/**
|
|
286
|
+
* Search odds lists by market identifiers using RediSearch
|
|
287
|
+
* @param redis - Redis client instance
|
|
288
|
+
* @param gameMarketId - Game market ID to search
|
|
289
|
+
* @param marketType - Market type to search
|
|
290
|
+
* @param levrGameObjectId - Levr game object ID to search
|
|
291
|
+
* @returns Array of odds lists matching the query
|
|
292
|
+
*/
|
|
293
|
+
const searchOddsLists = async (redis, gameMarketId, marketType, levrGameObjectId) => {
|
|
294
|
+
try {
|
|
295
|
+
const indexName = "odds_list_idx";
|
|
296
|
+
const queryParts = [];
|
|
297
|
+
if (gameMarketId) {
|
|
298
|
+
queryParts.push(`@gameMarketId:${gameMarketId}`);
|
|
299
|
+
}
|
|
300
|
+
if (marketType) {
|
|
301
|
+
queryParts.push(`@marketType:{${marketType}}`);
|
|
302
|
+
}
|
|
303
|
+
if (levrGameObjectId) {
|
|
304
|
+
queryParts.push(`@levrGameObjectId:${levrGameObjectId}`);
|
|
305
|
+
}
|
|
306
|
+
const finalQuery = queryParts.length > 0 ? queryParts.join(" ") : "*";
|
|
307
|
+
const result = await redis.call("FT.SEARCH", indexName, finalQuery, "LIMIT", 0, 100);
|
|
308
|
+
const [, ...items] = result;
|
|
309
|
+
const oddsList = [];
|
|
310
|
+
for (let i = 0; i < items.length; i += 2) {
|
|
311
|
+
const doc = items[i + 1];
|
|
312
|
+
if (Array.isArray(doc)) {
|
|
313
|
+
const obj = {};
|
|
314
|
+
for (let j = 0; j < doc.length; j += 2) {
|
|
315
|
+
obj[doc[j]] = doc[j + 1];
|
|
316
|
+
}
|
|
317
|
+
// Extract the odds list field
|
|
318
|
+
const field = Object.keys(obj).find((k) => k.includes(":"));
|
|
319
|
+
if (field && obj[field]) {
|
|
320
|
+
const parsed = JSON.parse(obj[field]);
|
|
321
|
+
oddsList.push(parsed);
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
return oddsList;
|
|
326
|
+
}
|
|
327
|
+
catch (error) {
|
|
328
|
+
winston_1.default.error("Error searching odds lists", error);
|
|
329
|
+
return [];
|
|
330
|
+
}
|
|
331
|
+
};
|
|
332
|
+
exports.searchOddsLists = searchOddsLists;
|
|
333
|
+
/**
|
|
334
|
+
* Get the latest odds for a specific game and market type
|
|
335
|
+
* @param redis - Redis client instance
|
|
336
|
+
* @param gameUniqueId - Unique game identifier
|
|
337
|
+
* @param marketType - Market type
|
|
338
|
+
* @returns Latest Odds object or null if not found
|
|
339
|
+
*/
|
|
340
|
+
const getLatestOdds = async (redis, gameUniqueId, marketType) => {
|
|
341
|
+
try {
|
|
342
|
+
const key = cache_keys_utils_1.gameToMarketOfOddsInCache;
|
|
343
|
+
const field = (0, cache_keys_utils_1.getMarketOddsField)(gameUniqueId, marketType);
|
|
344
|
+
const value = await redis.hget(key, field);
|
|
345
|
+
if (!value) {
|
|
346
|
+
return null;
|
|
347
|
+
}
|
|
348
|
+
const oddsList = JSON.parse(value);
|
|
349
|
+
if (oddsList.length === 0) {
|
|
350
|
+
return null;
|
|
351
|
+
}
|
|
352
|
+
// Return the last (most recent) odds entry
|
|
353
|
+
const lastOdds = oddsList[oddsList.length - 1];
|
|
354
|
+
return lastOdds ?? null;
|
|
355
|
+
}
|
|
356
|
+
catch (error) {
|
|
357
|
+
winston_1.default.error("Error getting latest odds", error);
|
|
358
|
+
return null;
|
|
359
|
+
}
|
|
360
|
+
};
|
|
361
|
+
exports.getLatestOdds = getLatestOdds;
|
|
362
|
+
/**
|
|
363
|
+
* Get the latest odds with its related market
|
|
364
|
+
* @param redis - Redis client instance
|
|
365
|
+
* @param gameUniqueId - Unique game identifier
|
|
366
|
+
* @param marketType - Market type
|
|
367
|
+
* @returns Odds with related market or null if not found
|
|
368
|
+
*/
|
|
369
|
+
const getLatestOddsWithMarket = async (redis, gameUniqueId, marketType) => {
|
|
370
|
+
try {
|
|
371
|
+
// Get the latest odds
|
|
372
|
+
const latestOdds = await (0, exports.getLatestOdds)(redis, gameUniqueId, marketType);
|
|
373
|
+
if (!latestOdds) {
|
|
374
|
+
return null;
|
|
375
|
+
}
|
|
376
|
+
// Get the related market
|
|
377
|
+
const key = (0, cache_keys_utils_1.getMarketKeyWithGameUniqueIdMarketType)(gameUniqueId, marketType);
|
|
378
|
+
const marketData = await redis.hgetall(key);
|
|
379
|
+
if (Object.keys(marketData).length === 0) {
|
|
380
|
+
return latestOdds;
|
|
381
|
+
}
|
|
382
|
+
const market = marketData;
|
|
383
|
+
return {
|
|
384
|
+
...latestOdds,
|
|
385
|
+
market,
|
|
386
|
+
};
|
|
387
|
+
}
|
|
388
|
+
catch (error) {
|
|
389
|
+
winston_1.default.error("Error getting latest odds with market", error);
|
|
390
|
+
return null;
|
|
391
|
+
}
|
|
392
|
+
};
|
|
393
|
+
exports.getLatestOddsWithMarket = getLatestOddsWithMarket;
|
|
394
|
+
/**
|
|
395
|
+
* Drop all search indices
|
|
396
|
+
* @param redis - Redis client instance
|
|
397
|
+
*/
|
|
398
|
+
const dropAllIndices = async (redis) => {
|
|
399
|
+
try {
|
|
400
|
+
const indices = ["market_idx"];
|
|
401
|
+
for (const idx of indices) {
|
|
402
|
+
await redis.call("FT.DROPINDEX", idx).catch(() => {
|
|
403
|
+
winston_1.default.warn(`Index ${idx} does not exist`);
|
|
404
|
+
});
|
|
405
|
+
}
|
|
406
|
+
winston_1.default.info("Dropped search indices");
|
|
407
|
+
}
|
|
408
|
+
catch (error) {
|
|
409
|
+
winston_1.default.error("Error dropping indices", error);
|
|
410
|
+
}
|
|
411
|
+
};
|
|
412
|
+
exports.dropAllIndices = dropAllIndices;
|
|
413
|
+
//# sourceMappingURL=market.query.engine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"market.query.engine.js","sourceRoot":"","sources":["../../../../src/server/oracle/redis-cache-manager/market.query.engine.ts"],"names":[],"mappings":"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"}
|