Skip to content

Commit 02efad9

Browse files
committed
feat: add invalidateMetadataCache method to data access objects and update usage in GetConnectionDiagramUseCase
1 parent 99f2a58 commit 02efad9

5 files changed

Lines changed: 15 additions & 0 deletions

File tree

backend/src/entities/connection/use-cases/get-connection-diagram.use.case.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ export class GetConnectionDiagramUseCase
4646
: undefined;
4747

4848
await validateSchemaCache(dao, userEmail);
49+
dao.invalidateMetadataCache();
4950

5051
let tables: Array<{ tableName: string; isView: boolean }>;
5152
try {

shared-code/src/data-access-layer/data-access-objects/basic-data-access-object.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { Knex } from 'knex';
2+
import { LRUStorage } from '../../caching/lru-storage.js';
23
import { isObjectEmpty } from '../../helpers/is-object-empty.js';
34
import { KnexManager } from '../../knex-manager/knex-manager.js';
45
import { ConnectionParams } from '../shared/data-structures/connections-params.ds.js';
@@ -11,6 +12,11 @@ export class BasicDataAccessObject {
1112
constructor(connection: ConnectionParams) {
1213
this.connection = connection;
1314
}
15+
16+
public invalidateMetadataCache(): void {
17+
LRUStorage.invalidateConnectionTableMetadata(this.connection);
18+
}
19+
1420
protected async configureKnex(): Promise<Knex<any, any[]>> {
1521
const knexManager = KnexManager.knexStorage();
1622
return knexManager.get(this.connection.type)(this.connection);

shared-code/src/data-access-layer/data-access-objects/data-access-object-agent.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,10 @@ export class DataAccessObjectAgent implements IDataAccessObjectAgent {
4040
this.connection = connection;
4141
}
4242

43+
public invalidateMetadataCache(): void {
44+
LRUStorage.invalidateConnectionTableMetadata(this.connection);
45+
}
46+
4347
public async addRowInTable(
4448
tableName: string,
4549
row: Record<string, unknown>,

shared-code/src/shared/interfaces/data-access-object-agent.interface.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,8 @@ export interface IDataAccessObjectAgent {
6868

6969
getTableStructureWithoutCache(tableName: string, userEmail: string): Promise<Array<TableStructureDS>>;
7070

71+
invalidateMetadataCache(): void;
72+
7173
testConnect(): Promise<TestConnectionResultDS>;
7274

7375
updateRowInTable(

shared-code/src/shared/interfaces/data-access-object.interface.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,8 @@ export interface IDataAccessObject {
5656

5757
getTableStructureWithoutCache(tableName: string): Promise<Array<TableStructureDS>>;
5858

59+
invalidateMetadataCache(): void;
60+
5961
testConnect(): Promise<TestConnectionResultDS>;
6062

6163
updateRowInTable(

0 commit comments

Comments
 (0)