Skip to content

Commit ae18987

Browse files
#RI-4586 - align BE and FE getModules summary (#2313)
* #RI-4586 - align BE and FE getModules summary
1 parent 4a42e42 commit ae18987

File tree

3 files changed

+54
-9
lines changed

3 files changed

+54
-9
lines changed

redisinsight/api/src/constants/redis-modules.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ export enum AdditionalRedisModuleName {
66
RedisJSON = 'ReJSON',
77
RediSearch = 'search',
88
RedisTimeSeries = 'timeseries',
9+
'Triggers & Functions' = 'redisgears'
910
}
1011

1112
export enum AdditionalSearchModuleName {
@@ -14,6 +15,11 @@ export enum AdditionalSearchModuleName {
1415
FTL = 'ftl',
1516
}
1617

18+
export enum AdditionalTriggersAndFunctionsModuleName {
19+
TriggersAndFunctions = 'redisgears',
20+
TriggersAndFunctions2 = 'redisgears_2',
21+
}
22+
1723
export const SUPPORTED_REDIS_MODULES = Object.freeze({
1824
ai: AdditionalRedisModuleName.RedisAI,
1925
graph: AdditionalRedisModuleName.RedisGraph,
@@ -60,3 +66,8 @@ export const REDISEARCH_MODULES: string[] = [
6066
AdditionalSearchModuleName.FT,
6167
AdditionalSearchModuleName.FTL,
6268
]
69+
70+
export const TRIGGERED_AND_FUNCTIONS_MODULES: string[] = [
71+
AdditionalTriggersAndFunctionsModuleName.TriggersAndFunctions,
72+
AdditionalTriggersAndFunctionsModuleName.TriggersAndFunctions2,
73+
]

redisinsight/api/src/utils/redis-modules-summary.spec.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ const DEFAULT_SUMMARY = Object.freeze(
99
RedisBloom: { loaded: false },
1010
RedisJSON: { loaded: false },
1111
RedisTimeSeries: { loaded: false },
12+
'Triggers & Functions': { loaded: false },
1213
customModules: [],
1314
},
1415
);
@@ -53,7 +54,7 @@ const getRedisModulesSummaryTests = [
5354
RedisJSON: { loaded: true, version: 10000, semanticVersion: '1.0.0' },
5455
RediSearch: { loaded: true, version: 10000, semanticVersion: '1.0.0' },
5556
RedisTimeSeries: { loaded: true, version: 10000, semanticVersion: '1.0.0' },
56-
'Triggers & Functios': { loaded: true, version: 10000, semanticVersion: '1.0.0' },
57+
'Triggers & Functions': { loaded: true, version: 10000, semanticVersion: '1.0.0' },
5758
customModules: [],
5859
},
5960
},

redisinsight/api/src/utils/redis-modules-summary.ts

Lines changed: 41 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
11
import { cloneDeep } from 'lodash';
2-
import { AdditionalRedisModuleName, SUPPORTED_REDIS_MODULES } from 'src/constants';
2+
import {
3+
AdditionalRedisModuleName,
4+
SUPPORTED_REDIS_MODULES,
5+
REDISEARCH_MODULES,
6+
TRIGGERED_AND_FUNCTIONS_MODULES,
7+
} from 'src/constants';
38
import { AdditionalRedisModule } from 'src/modules/database/models/additional.redis.module';
49

510
interface IModuleSummary {
@@ -19,30 +24,58 @@ export const DEFAULT_SUMMARY: IRedisModulesSummary = Object.freeze(
1924
RedisBloom: { loaded: false },
2025
RedisJSON: { loaded: false },
2126
RedisTimeSeries: { loaded: false },
27+
'Triggers & Functions': { loaded: false },
2228
customModules: [],
2329
},
2430
);
2531

32+
export const isRedisearchAvailable = (modules: AdditionalRedisModule[]): boolean => (
33+
modules?.some(({ name }) => REDISEARCH_MODULES.some((search) => name === search))
34+
);
35+
36+
export const isTriggeredAndFunctionsAvailable = (modules: AdditionalRedisModule[]): boolean => (
37+
modules?.some(({ name }) => TRIGGERED_AND_FUNCTIONS_MODULES.some((value) => name === value))
38+
);
39+
2640
const getEnumKeyBValue = (myEnum: any, enumValue: number | string): string => {
2741
const keys = Object.keys(myEnum);
2842
const index = keys.findIndex((x) => myEnum[x] === enumValue);
2943
return index > -1 ? keys[index] : '';
3044
};
3145

46+
const getModuleSummaryToSent = (module: AdditionalRedisModule) => ({
47+
loaded: true,
48+
version: module.version,
49+
semanticVersion: module.semanticVersion,
50+
});
51+
52+
// same function as in FE
3253
export const getRedisModulesSummary = (modules: AdditionalRedisModule[] = []): IRedisModulesSummary => {
3354
const summary = cloneDeep(DEFAULT_SUMMARY);
3455
try {
3556
modules.forEach(((module) => {
3657
if (SUPPORTED_REDIS_MODULES[module.name]) {
3758
const moduleName = getEnumKeyBValue(AdditionalRedisModuleName, module.name);
38-
summary[moduleName] = {
39-
loaded: true,
40-
version: module.version,
41-
semanticVersion: module.semanticVersion,
42-
};
43-
} else {
44-
summary.customModules.push(module);
59+
summary[moduleName] = getModuleSummaryToSent(module);
60+
return;
4561
}
62+
63+
if (isRedisearchAvailable([module])) {
64+
const redisearchName = getEnumKeyBValue(AdditionalRedisModuleName, AdditionalRedisModuleName.RediSearch);
65+
summary[redisearchName] = getModuleSummaryToSent(module);
66+
return;
67+
}
68+
69+
if (isTriggeredAndFunctionsAvailable([module])) {
70+
const triggeredAndFunctionsName = getEnumKeyBValue(
71+
AdditionalRedisModuleName,
72+
AdditionalRedisModuleName['Triggers & Functions'],
73+
);
74+
summary[triggeredAndFunctionsName] = getModuleSummaryToSent(module);
75+
return;
76+
}
77+
78+
summary.customModules.push(module);
4679
}));
4780
} catch (e) {
4881
// continue regardless of error

0 commit comments

Comments
 (0)