Skip to content

Commit 066a59c

Browse files
committed
Merge branch 'feature/RI-2409-change_database_index' into e2e/feature/RI-2409-change_database_index
2 parents f25a3ec + ab18e33 commit 066a59c

File tree

16 files changed

+73
-34
lines changed

16 files changed

+73
-34
lines changed

redisinsight/api/src/common/models/client-metadata.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { Session } from 'src/common/models/session';
22
import { Type } from 'class-transformer';
33
import {
4-
IsEnum, IsNotEmpty, IsNumber, IsOptional, IsString,
4+
IsEnum, IsNotEmpty, IsNumber, IsOptional, IsString, Max, Min,
55
} from 'class-validator';
66

77
export enum ClientContext {
@@ -31,5 +31,7 @@ export class ClientMetadata {
3131
@IsOptional()
3232
@IsNumber()
3333
@Type(() => Number)
34+
@Min(0)
35+
@Max(2147483647)
3436
db?: number;
3537
}
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
import { PickType } from '@nestjs/swagger';
2+
import { ClientMetadata } from 'src/common/models/client-metadata';
3+
4+
export class DatabaseIndex extends PickType(ClientMetadata, ['db'] as const) {}

redisinsight/api/src/common/models/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,4 @@ export * from './common';
22
export * from './endpoint';
33
export * from './session';
44
export * from './client-metadata';
5+
export * from './database-index';
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import { ArgumentMetadata, ValidationPipe } from '@nestjs/common';
2+
3+
export class DbIndexValidationPipe extends ValidationPipe {
4+
async transform(db, metadata: ArgumentMetadata) {
5+
return super.transform({ db }, metadata);
6+
}
7+
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export * from './database-index.validation.pipe';

redisinsight/api/src/modules/bulk-actions/bulk-actions.gateway.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ export class BulkActionsGateway implements OnGatewayConnection, OnGatewayDisconn
4646

4747
@SubscribeMessage(BulkActionsServerEvents.Abort)
4848
abort(@Body() dto: BulkActionIdDto) {
49-
this.logger.log('Subscribing to bulk action.');
49+
this.logger.log('Aborting bulk action.');
5050
return this.service.abort(dto);
5151
}
5252

redisinsight/api/src/modules/bulk-actions/dto/create-bulk-action.dto.ts

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
import { BulkActionFilter } from 'src/modules/bulk-actions/models/bulk-action-filter';
22
import { BulkActionType } from 'src/modules/bulk-actions/constants';
3-
import { IsEnum, IsNotEmpty, IsString } from 'class-validator';
3+
import {
4+
IsEnum, IsNotEmpty, IsNumber, IsOptional, IsString, Max, Min,
5+
} from 'class-validator';
46
import { Type } from 'class-transformer';
57
import { BulkActionIdDto } from 'src/modules/bulk-actions/dto/bulk-action-id.dto';
68

@@ -16,4 +18,11 @@ export class CreateBulkActionDto extends BulkActionIdDto {
1618
@IsNotEmpty()
1719
@Type(() => BulkActionFilter)
1820
filter: BulkActionFilter;
21+
22+
@IsOptional()
23+
@IsNumber()
24+
@Type(() => Number)
25+
@Min(0)
26+
@Max(2147483647)
27+
db?: number;
1928
}

redisinsight/api/src/modules/bulk-actions/providers/bulk-actions.provider.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ export class BulkActionsProvider {
3838
session: undefined,
3939
databaseId: dto.databaseId,
4040
context: ClientContext.Common,
41+
db: dto.db,
4142
});
4243

4344
await bulkAction.prepare(client, BulkActionsProvider.getSimpleRunnerClass(dto));

redisinsight/api/src/modules/database/database-info.controller.ts

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,19 @@
11
import { ApiTags } from '@nestjs/swagger';
22
import {
3-
Controller, Get, Param, UseInterceptors,
3+
Controller, Get, Param, UseInterceptors, UsePipes, ValidationPipe,
44
} from '@nestjs/common';
55
import { ApiEndpoint } from 'src/decorators/api-endpoint.decorator';
66
import { TimeoutInterceptor } from 'src/common/interceptors/timeout.interceptor';
77
import { DatabaseInfoService } from 'src/modules/database/database-info.service';
88
import { DatabaseOverview } from 'src/modules/database/models/database-overview';
99
import { RedisDatabaseInfoResponse } from 'src/modules/database/dto/redis-info.dto';
10-
import { ClientMetadata } from 'src/common/models';
10+
import { ClientMetadata, DatabaseIndex } from 'src/common/models';
1111
import { ClientMetadataParam } from 'src/common/decorators';
12+
import { DbIndexValidationPipe } from 'src/common/pipes';
1213

1314
@ApiTags('Database Instances')
1415
@Controller('databases')
16+
@UsePipes(new ValidationPipe({ transform: true }))
1517
export class DatabaseInfoController {
1618
constructor(
1719
private databaseInfoService: DatabaseInfoService,
@@ -73,12 +75,12 @@ export class DatabaseInfoController {
7375
],
7476
})
7577
async getDatabaseIndex(
76-
@Param('index') db: string,
78+
@Param('index', new DbIndexValidationPipe({ transform: true })) databaseIndexDto: DatabaseIndex,
7779
@ClientMetadataParam({
7880
databaseIdParam: 'id',
7981
ignoreDbIndex: true,
8082
}) clientMetadata: ClientMetadata,
8183
): Promise<void> {
82-
return this.databaseInfoService.getDatabaseIndex(clientMetadata, db);
84+
return this.databaseInfoService.getDatabaseIndex(clientMetadata, databaseIndexDto.db);
8385
}
8486
}

redisinsight/api/src/modules/database/database-info.service.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,15 +50,15 @@ export class DatabaseInfoService {
5050
* @param clientMetadata
5151
* @param db
5252
*/
53-
public async getDatabaseIndex(clientMetadata: ClientMetadata, db: string): Promise<void> {
53+
public async getDatabaseIndex(clientMetadata: ClientMetadata, db: number): Promise<void> {
5454
this.logger.log(`Connection to database index: ${db}`);
5555

5656
let client;
5757

5858
try {
5959
client = await this.databaseConnectionService.createClient({
6060
...clientMetadata,
61-
db: parseInt(db, 10),
61+
db,
6262
});
6363
client?.disconnect();
6464
return undefined;

0 commit comments

Comments
 (0)