1
1
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' ;
3
8
import { AdditionalRedisModule } from 'src/modules/database/models/additional.redis.module' ;
4
9
5
10
interface IModuleSummary {
@@ -19,30 +24,58 @@ export const DEFAULT_SUMMARY: IRedisModulesSummary = Object.freeze(
19
24
RedisBloom : { loaded : false } ,
20
25
RedisJSON : { loaded : false } ,
21
26
RedisTimeSeries : { loaded : false } ,
27
+ 'Triggers & Functions' : { loaded : false } ,
22
28
customModules : [ ] ,
23
29
} ,
24
30
) ;
25
31
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
+
26
40
const getEnumKeyBValue = ( myEnum : any , enumValue : number | string ) : string => {
27
41
const keys = Object . keys ( myEnum ) ;
28
42
const index = keys . findIndex ( ( x ) => myEnum [ x ] === enumValue ) ;
29
43
return index > - 1 ? keys [ index ] : '' ;
30
44
} ;
31
45
46
+ const getModuleSummaryToSent = ( module : AdditionalRedisModule ) => ( {
47
+ loaded : true ,
48
+ version : module . version ,
49
+ semanticVersion : module . semanticVersion ,
50
+ } ) ;
51
+
52
+ // same function as in FE
32
53
export const getRedisModulesSummary = ( modules : AdditionalRedisModule [ ] = [ ] ) : IRedisModulesSummary => {
33
54
const summary = cloneDeep ( DEFAULT_SUMMARY ) ;
34
55
try {
35
56
modules . forEach ( ( ( module ) => {
36
57
if ( SUPPORTED_REDIS_MODULES [ module . name ] ) {
37
58
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 ;
45
61
}
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 ) ;
46
79
} ) ) ;
47
80
} catch ( e ) {
48
81
// continue regardless of error
0 commit comments