diff --git a/redisinsight/api/src/__mocks__/errors.ts b/redisinsight/api/src/__mocks__/errors.ts index 2f087a095e..1073b0f29f 100644 --- a/redisinsight/api/src/__mocks__/errors.ts +++ b/redisinsight/api/src/__mocks__/errors.ts @@ -25,6 +25,12 @@ export const mockRedisUnknownIndexName: ReplyError = { message: 'Unknown Index name', }; +export const mockRedisUnknownIndexNameV8: ReplyError = { + name: 'ReplyError', + command: 'FT.INFO', + message: 'idx: no such index', +}; + export const mockRedisWrongNumberOfArgumentsError: ReplyError = { name: 'ReplyError', command: 'GET', diff --git a/redisinsight/api/src/modules/browser/redisearch/redisearch.service.spec.ts b/redisinsight/api/src/modules/browser/redisearch/redisearch.service.spec.ts index e4ec3ee538..a150852fed 100644 --- a/redisinsight/api/src/modules/browser/redisearch/redisearch.service.spec.ts +++ b/redisinsight/api/src/modules/browser/redisearch/redisearch.service.spec.ts @@ -13,6 +13,7 @@ import { mockDatabaseClientFactory, mockRedisNoPermError, mockRedisUnknownIndexName, + mockRedisUnknownIndexNameV8, mockStandaloneRedisClient, } from 'src/__mocks__'; import { RedisearchService } from 'src/modules/browser/redisearch/redisearch.service'; @@ -155,6 +156,38 @@ describe('RedisearchService', () => { { replyEncoding: 'utf8' }, ); }); + it('should create index for standalone v8', async () => { + when(standaloneClient.sendCommand) + .calledWith(expect.arrayContaining(['FT.INFO'])) + .mockRejectedValue(mockRedisUnknownIndexNameV8); + when(standaloneClient.sendCommand) + .calledWith(expect.arrayContaining(['FT.CREATE'])) + .mockResolvedValue('OK'); + + await service.createIndex( + mockBrowserClientMetadata, + mockCreateRedisearchIndexDto, + ); + + expect(standaloneClient.sendCommand).toHaveBeenCalledTimes(2); + expect(standaloneClient.sendCommand).toHaveBeenCalledWith( + [ + 'FT.CREATE', + mockCreateRedisearchIndexDto.index, + 'ON', + mockCreateRedisearchIndexDto.type, + 'PREFIX', + 2, + ...mockCreateRedisearchIndexDto.prefixes, + 'SCHEMA', + mockCreateRedisearchIndexDto.fields[0].name, + mockCreateRedisearchIndexDto.fields[0].type, + mockCreateRedisearchIndexDto.fields[1].name, + mockCreateRedisearchIndexDto.fields[1].type, + ], + { replyEncoding: 'utf8' }, + ); + }); it('should create index for cluster', async () => { databaseClientFactory.getOrCreateClient = jest .fn() diff --git a/redisinsight/api/src/modules/browser/redisearch/redisearch.service.ts b/redisinsight/api/src/modules/browser/redisearch/redisearch.service.ts index 44d2acf6b9..af778e3bd8 100644 --- a/redisinsight/api/src/modules/browser/redisearch/redisearch.service.ts +++ b/redisinsight/api/src/modules/browser/redisearch/redisearch.service.ts @@ -104,7 +104,13 @@ export class RedisearchService { ); } } catch (error) { - if (!error.message?.toLowerCase()?.includes('unknown index name')) { + const noIndexMessages = ['unknown index name', 'no such index']; + + if ( + !noIndexMessages.some((keyword) => + error.message?.toLowerCase().includes(keyword), + ) + ) { throw error; } } diff --git a/redisinsight/ui/src/components/base/layout/horizontal-rule/HorizontalRule.tsx b/redisinsight/ui/src/components/base/layout/horizontal-rule/HorizontalRule.tsx index 69e72b775c..02f10a0cd7 100644 --- a/redisinsight/ui/src/components/base/layout/horizontal-rule/HorizontalRule.tsx +++ b/redisinsight/ui/src/components/base/layout/horizontal-rule/HorizontalRule.tsx @@ -10,6 +10,8 @@ const HorizontalRule = ({ className, size = 'full', margin = 'l', + color, + colorVariable, ...rest }: HorizontalRuleProps) => { const classes = classNames('RI-horizontal-rule', className) @@ -19,9 +21,11 @@ const HorizontalRule = ({ size={size} margin={margin} className={classes} + color={color} + colorVariable={colorVariable} {...rest} /> ) } -export default HorizontalRule \ No newline at end of file +export default HorizontalRule diff --git a/redisinsight/ui/src/components/base/layout/horizontal-rule/horizontal-rule.styles.ts b/redisinsight/ui/src/components/base/layout/horizontal-rule/horizontal-rule.styles.ts index 66632e60bc..bb95c1aff7 100644 --- a/redisinsight/ui/src/components/base/layout/horizontal-rule/horizontal-rule.styles.ts +++ b/redisinsight/ui/src/components/base/layout/horizontal-rule/horizontal-rule.styles.ts @@ -47,12 +47,16 @@ const horizontalRuleStyles = { export interface HorizontalRuleProps extends HTMLAttributes { size?: HorizontalRuleSize margin?: HorizontalRuleMargin + color?: string + colorVariable?: string } export const StyledHorizontalRule = styled.hr< Omit & { size?: HorizontalRuleSize margin?: HorizontalRuleMargin + color?: string + colorVariable?: string } >` ${({ size = 'full' }) => horizontalRuleStyles.size[size]} @@ -65,6 +69,9 @@ export const StyledHorizontalRule = styled.hr< flex-shrink: 0; flex-grow: 0; - background-color: var(--hrBackgroundColor); + background-color: ${({ color, colorVariable }) => + color || colorVariable + ? (color ?? `var(--${colorVariable})`) + : 'var(--hrBackgroundColor)'}; height: 1px; ` diff --git a/redisinsight/ui/src/pages/browser/components/create-redisearch-index/CreateRedisearchIndex.tsx b/redisinsight/ui/src/pages/browser/components/create-redisearch-index/CreateRedisearchIndex.tsx index ea59d401bf..0e66cb7829 100644 --- a/redisinsight/ui/src/pages/browser/components/create-redisearch-index/CreateRedisearchIndex.tsx +++ b/redisinsight/ui/src/pages/browser/components/create-redisearch-index/CreateRedisearchIndex.tsx @@ -268,7 +268,7 @@ const CreateRedisearchIndex = ({ onClosePanel, onCreateIndex }: Props) => { /> - + Identifier @@ -317,7 +317,7 @@ const CreateRedisearchIndex = ({ onClosePanel, onCreateIndex }: Props) => { - + - +