diff --git a/backend/src/entities/table/application/data-structures/get-table-rows.ds.ts b/backend/src/entities/table/application/data-structures/get-table-rows.ds.ts index 938c7e411..58f49c076 100644 --- a/backend/src/entities/table/application/data-structures/get-table-rows.ds.ts +++ b/backend/src/entities/table/application/data-structures/get-table-rows.ds.ts @@ -8,4 +8,5 @@ export class GetTableRowsDs { tableName: string; userId: string; filters?: Record; + uncached?: boolean; } diff --git a/backend/src/entities/table/table.controller.ts b/backend/src/entities/table/table.controller.ts index dd3889902..8b3865a2a 100644 --- a/backend/src/entities/table/table.controller.ts +++ b/backend/src/entities/table/table.controller.ts @@ -260,6 +260,12 @@ export class TableController { @ApiQuery({ name: 'page', required: false }) @ApiQuery({ name: 'perPage', required: false }) @ApiQuery({ name: 'search', required: false }) + @ApiQuery({ + name: 'uncached', + required: false, + type: Boolean, + description: 'Invalidate table metadata cache before reading rows', + }) @UseGuards(TableReadGuard) @Timeout(TimeoutDefaults.EXTENDED) @Throttle({ default: { limit: 300, ttl: 60000 } }) @@ -270,6 +276,7 @@ export class TableController { @Query('page') page: string, @Query('perPage') perPage: string, @Query('search') searchingFieldValue: string, + @Query('uncached') uncached: string, @Query() query: Record, @SlugUuid('connectionId') connectionId: string, @UserId() userId: string, @@ -308,6 +315,7 @@ export class TableController { tableName: tableName, userId: userId, filters: body?.filters, + uncached: uncached === 'true', }; return await this.getTableRowsUseCase.execute(inputData, InTransactionEnum.OFF); } diff --git a/backend/src/entities/table/use-cases/get-table-rows.use.case.ts b/backend/src/entities/table/use-cases/get-table-rows.use.case.ts index 18e442a5f..533919d6c 100644 --- a/backend/src/entities/table/use-cases/get-table-rows.use.case.ts +++ b/backend/src/entities/table/use-cases/get-table-rows.use.case.ts @@ -61,7 +61,7 @@ export class GetTableRowsUseCase extends AbstractUseCase { let operationResult = OperationResultStatusEnum.unknown; - const { connectionId, masterPwd, page, perPage, query, tableName, userId, filters } = inputData; + const { connectionId, masterPwd, page, perPage, query, tableName, userId, filters, uncached } = inputData; let { searchingFieldValue } = inputData; const connection = await this._dbContext.connectionRepository.findAndDecryptConnection(connectionId, masterPwd); validateConnection(connection); @@ -78,6 +78,9 @@ export class GetTableRowsUseCase extends AbstractUseCase