@@ -25,6 +25,7 @@ import { SqlDialectInfoService } from '../SqlDialectInfoService';
2525import { SqlEditorService } from '../SqlEditorService' ;
2626import { ISQLScriptSegment , SQLParser } from '../SQLParser' ;
2727import { SqlExecutionPlanService } from '../SqlResultTabs/ExecutionPlan/SqlExecutionPlanService' ;
28+ import { SqlAuditService } from '../SqlResultTabs/SqlAudit/SqlAuditService' ;
2829import { OUTPUT_LOGS_TAB_ID } from '../SqlResultTabs/OutputLogs/OUTPUT_LOGS_TAB_ID' ;
2930import { OutputLogsService } from '../SqlResultTabs/OutputLogs/OutputLogsService' ;
3031import { SqlQueryService } from '../SqlResultTabs/SqlQueryService' ;
@@ -39,6 +40,7 @@ interface ISQLEditorDataPrivate extends ISQLEditorData {
3940 readonly sqlEditorService : SqlEditorService ;
4041 readonly notificationService : NotificationService ;
4142 readonly sqlExecutionPlanService : SqlExecutionPlanService ;
43+ readonly sqlAuditService : SqlAuditService ;
4244 readonly commonDialogService : CommonDialogService ;
4345 readonly sqlResultTabsService : SqlResultTabsService ;
4446 readonly dataSource : ISqlDataSource | undefined ;
@@ -67,6 +69,7 @@ export function useSqlEditor(state: ISqlEditorTabState): ISQLEditorData {
6769 const sqlEditorService = useService ( SqlEditorService ) ;
6870 const notificationService = useService ( NotificationService ) ;
6971 const sqlExecutionPlanService = useService ( SqlExecutionPlanService ) ;
72+ const sqlAuditService = useService ( SqlAuditService ) ;
7073 const sqlResultTabsService = useService ( SqlResultTabsService ) ;
7174 const commonDialogService = useService ( CommonDialogService ) ;
7275 const sqlDataSourceService = useService ( SqlDataSourceService ) ;
@@ -301,6 +304,23 @@ export function useSqlEditor(state: ISqlEditorTabState): ISQLEditorData {
301304 } catch { }
302305 } ,
303306
307+ async audit ( ) : Promise < void > {
308+ const isQuery = this . dataSource ?. hasFeature ( ESqlDataSourceFeatures . query ) ;
309+ const isExecutable = this . dataSource ?. hasFeature ( ESqlDataSourceFeatures . executable ) ;
310+
311+ if ( ! isQuery || ! isExecutable ) {
312+ return ;
313+ }
314+
315+ const query = this . getSubQuery ( ) ;
316+
317+ try {
318+ await this . executeQueryAction ( await this . executeQueryAction ( query , ( ) => this . getResolvedSegment ( ) ) , query =>
319+ this . sqlAuditService . audit ( this . state , query . query ) ,
320+ ) ;
321+ } catch { }
322+ } ,
323+
304324 async switchEditing ( ) : Promise < void > {
305325 this . dataSource ?. setEditing ( ! this . dataSource . isEditing ( ) ) ;
306326 } ,
@@ -470,6 +490,7 @@ export function useSqlEditor(state: ISqlEditorTabState): ISQLEditorData {
470490 executeQuery : action . bound ,
471491 executeQueryNewTab : action . bound ,
472492 showExecutionPlan : action . bound ,
493+ audit : action . bound ,
473494 executeScript : action . bound ,
474495 switchEditing : action . bound ,
475496 dialect : computed ,
@@ -489,6 +510,7 @@ export function useSqlEditor(state: ISqlEditorTabState): ISQLEditorData {
489510 sqlDialectInfoService,
490511 sqlEditorService,
491512 sqlExecutionPlanService,
513+ sqlAuditService,
492514 sqlResultTabsService,
493515 notificationService,
494516 commonDialogService,
0 commit comments