Skip to content

Commit c03ef7b

Browse files
authored
Merge pull request #4088 from RedisInsight/feature/RI-6265_update-list-of-databases
Feature/ri 6265 update list of databases
2 parents 2ec14b6 + 8676153 commit c03ef7b

File tree

186 files changed

+4128
-3115
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

186 files changed

+4128
-3115
lines changed

redisinsight/api/config/features-config.json

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"version": 2.56,
2+
"version": 2.57,
33
"features": {
44
"redisDataIntegration": {
55
"flag": true,
@@ -111,6 +111,10 @@
111111
"data": {
112112
"strategy": "ioredis"
113113
}
114+
},
115+
"enhancedCloudUI": {
116+
"flag": true,
117+
"perc": [[0, 50]]
114118
}
115119
}
116120
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
import { MigrationInterface, QueryRunner } from "typeorm";
2+
3+
export class DatabaseCreatedAt1733740794737 implements MigrationInterface {
4+
name = 'DatabaseCreatedAt1733740794737'
5+
6+
public async up(queryRunner: QueryRunner): Promise<void> {
7+
await queryRunner.query(`CREATE TABLE "temporary_database_instance" ("id" varchar PRIMARY KEY NOT NULL, "host" varchar NOT NULL, "port" integer NOT NULL, "name" varchar NOT NULL, "username" varchar, "password" varchar, "tls" boolean, "verifyServerCert" boolean, "lastConnection" datetime, "caCertId" varchar, "clientCertId" varchar, "connectionType" varchar NOT NULL DEFAULT ('STANDALONE'), "nodes" varchar DEFAULT ('[]'), "nameFromProvider" varchar, "sentinelMasterName" varchar, "sentinelMasterUsername" varchar, "sentinelMasterPassword" varchar, "provider" varchar DEFAULT ('UNKNOWN'), "modules" varchar NOT NULL DEFAULT ('[]'), "db" integer, "encryption" varchar, "tlsServername" varchar, "new" boolean, "ssh" boolean, "timeout" integer, "compressor" varchar NOT NULL DEFAULT ('NONE'), "version" varchar, "createdAt" datetime DEFAULT (datetime('now')), CONSTRAINT "FK_d1bc747b5938e22b4b708d8e9a5" FOREIGN KEY ("caCertId") REFERENCES "ca_certificate" ("id") ON DELETE SET NULL ON UPDATE NO ACTION, CONSTRAINT "FK_3b9b625266c00feb2d66a9f36e4" FOREIGN KEY ("clientCertId") REFERENCES "client_certificate" ("id") ON DELETE SET NULL ON UPDATE NO ACTION)`);
8+
await queryRunner.query(`INSERT INTO "temporary_database_instance"("id", "host", "port", "name", "username", "password", "tls", "verifyServerCert", "lastConnection", "caCertId", "clientCertId", "connectionType", "nodes", "nameFromProvider", "sentinelMasterName", "sentinelMasterUsername", "sentinelMasterPassword", "provider", "modules", "db", "encryption", "tlsServername", "new", "ssh", "timeout", "compressor", "version") SELECT "id", "host", "port", "name", "username", "password", "tls", "verifyServerCert", "lastConnection", "caCertId", "clientCertId", "connectionType", "nodes", "nameFromProvider", "sentinelMasterName", "sentinelMasterUsername", "sentinelMasterPassword", "provider", "modules", "db", "encryption", "tlsServername", "new", "ssh", "timeout", "compressor", "version" FROM "database_instance"`);
9+
await queryRunner.query(`DROP TABLE "database_instance"`);
10+
await queryRunner.query(`ALTER TABLE "temporary_database_instance" RENAME TO "database_instance"`);
11+
}
12+
13+
public async down(queryRunner: QueryRunner): Promise<void> {
14+
await queryRunner.query(`ALTER TABLE "database_instance" RENAME TO "temporary_database_instance"`);
15+
await queryRunner.query(`CREATE TABLE "database_instance" ("id" varchar PRIMARY KEY NOT NULL, "host" varchar NOT NULL, "port" integer NOT NULL, "name" varchar NOT NULL, "username" varchar, "password" varchar, "tls" boolean, "verifyServerCert" boolean, "lastConnection" datetime, "caCertId" varchar, "clientCertId" varchar, "connectionType" varchar NOT NULL DEFAULT ('STANDALONE'), "nodes" varchar DEFAULT ('[]'), "nameFromProvider" varchar, "sentinelMasterName" varchar, "sentinelMasterUsername" varchar, "sentinelMasterPassword" varchar, "provider" varchar DEFAULT ('UNKNOWN'), "modules" varchar NOT NULL DEFAULT ('[]'), "db" integer, "encryption" varchar, "tlsServername" varchar, "new" boolean, "ssh" boolean, "timeout" integer, "compressor" varchar NOT NULL DEFAULT ('NONE'), "version" varchar, CONSTRAINT "FK_d1bc747b5938e22b4b708d8e9a5" FOREIGN KEY ("caCertId") REFERENCES "ca_certificate" ("id") ON DELETE SET NULL ON UPDATE NO ACTION, CONSTRAINT "FK_3b9b625266c00feb2d66a9f36e4" FOREIGN KEY ("clientCertId") REFERENCES "client_certificate" ("id") ON DELETE SET NULL ON UPDATE NO ACTION)`);
16+
await queryRunner.query(`INSERT INTO "database_instance"("id", "host", "port", "name", "username", "password", "tls", "verifyServerCert", "lastConnection", "caCertId", "clientCertId", "connectionType", "nodes", "nameFromProvider", "sentinelMasterName", "sentinelMasterUsername", "sentinelMasterPassword", "provider", "modules", "db", "encryption", "tlsServername", "new", "ssh", "timeout", "compressor", "version") SELECT "id", "host", "port", "name", "username", "password", "tls", "verifyServerCert", "lastConnection", "caCertId", "clientCertId", "connectionType", "nodes", "nameFromProvider", "sentinelMasterName", "sentinelMasterUsername", "sentinelMasterPassword", "provider", "modules", "db", "encryption", "tlsServername", "new", "ssh", "timeout", "compressor", "version" FROM "temporary_database_instance"`);
17+
await queryRunner.query(`DROP TABLE "temporary_database_instance"`);
18+
}
19+
20+
}

redisinsight/api/migration/index.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ import { Rdi1716370509836 } from './1716370509836-rdi';
4444
import { AiHistory1718260230164 } from './1718260230164-ai-history';
4545
import { CloudSession1729085495444 } from './1729085495444-cloud-session';
4646
import { CommandExecution1726058563737 } from './1726058563737-command-execution';
47+
import { DatabaseCreatedAt1733740794737 } from './1733740794737-database-createdAt';
4748

4849
export default [
4950
initialMigration1614164490968,
@@ -92,4 +93,5 @@ export default [
9293
AiHistory1718260230164,
9394
CloudSession1729085495444,
9495
CommandExecution1726058563737,
96+
DatabaseCreatedAt1733740794737,
9597
];

redisinsight/api/src/modules/database/database.service.spec.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -530,6 +530,8 @@ describe('DatabaseService', () => {
530530
mockSessionMetadata,
531531
omit({ ...mockDatabase, username: 'new-name', timeout: 40_000 }, ['sshOptions.id']),
532532
);
533+
expect(databaseRepository.get)
534+
.toHaveBeenCalledWith(mockSessionMetadata, mockDatabase.id, false, ['id', 'sshOptions.id', 'createdAt']);
533535
});
534536

535537
it('should create new database with merged ssh options', async () => {

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -295,7 +295,7 @@ export class DatabaseService {
295295
public async clone(sessionMetadata: SessionMetadata, id: string, dto: UpdateDatabaseDto): Promise<Database> {
296296
this.logger.log('Clone existing database');
297297
const database = await this.merge(
298-
await this.get(sessionMetadata, id, false, ['id', 'sshOptions.id']),
298+
await this.get(sessionMetadata, id, false, ['id', 'sshOptions.id', 'createdAt']),
299299
dto,
300300
);
301301
if (DatabaseService.isConnectionAffected(dto)) {

redisinsight/api/src/modules/database/entities/database.entity.ts

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import {
2-
Column, Entity, ManyToOne, OneToOne, PrimaryGeneratedColumn,
2+
Column, CreateDateColumn, Entity, ManyToOne, OneToOne, PrimaryGeneratedColumn,
33
} from 'typeorm';
44
import { CaCertificateEntity } from 'src/modules/certificate/entities/ca-certificate.entity';
55
import { ClientCertificateEntity } from 'src/modules/certificate/entities/client-certificate.entity';
@@ -172,6 +172,12 @@ export class DatabaseEntity {
172172
@Column({ type: 'datetime', nullable: true })
173173
lastConnection: Date;
174174

175+
@CreateDateColumn({
176+
nullable: true,
177+
})
178+
@Expose()
179+
createdAt: Date;
180+
175181
@Expose()
176182
@Column({
177183
nullable: true,
@@ -231,4 +237,4 @@ export class DatabaseEntity {
231237
@Expose()
232238
@Column({ nullable: true })
233239
version: string;
234-
}
240+
}

redisinsight/api/src/modules/database/models/database.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,13 @@ export class Database {
146146
@Expose()
147147
lastConnection: Date;
148148

149+
@ApiProperty({
150+
description: 'Date of creation',
151+
type: Date,
152+
})
153+
@Expose()
154+
createdAt?: Date;
155+
149156
@ApiPropertyOptional({
150157
description: 'Redis OSS Sentinel master group.',
151158
type: SentinelMaster,

redisinsight/api/src/modules/database/repositories/local.database.repository.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,7 @@ export class LocalDatabaseRepository extends DatabaseRepository {
9696
.select([
9797
'd.id', 'd.name', 'd.host', 'd.port', 'd.db', 'd.new', 'd.timeout',
9898
'd.connectionType', 'd.modules', 'd.lastConnection', 'd.provider', 'd.version', 'cd',
99+
'd.createdAt',
99100
])
100101
.getMany();
101102

@@ -262,4 +263,4 @@ export class LocalDatabaseRepository extends DatabaseRepository {
262263
}
263264
}
264265
}
265-
}
266+
}

redisinsight/api/src/modules/feature/constants/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ export enum KnownFeatures {
2929
DatabaseChat = 'databaseChat',
3030
Rdi = 'redisDataIntegration',
3131
HashFieldExpiration = 'hashFieldExpiration',
32+
EnhancedCloudUI = 'enhancedCloudUI',
3233
}
3334

3435
export interface IFeatureFlag {

redisinsight/api/src/modules/feature/constants/known-features.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,4 +39,8 @@ export const knownFeatures: Record<KnownFeatures, IFeatureFlag> = {
3939
name: KnownFeatures.Rdi,
4040
storage: FeatureStorage.Database,
4141
},
42+
[KnownFeatures.EnhancedCloudUI]: {
43+
name: KnownFeatures.EnhancedCloudUI,
44+
storage: FeatureStorage.Database,
45+
},
4246
};

0 commit comments

Comments
 (0)