@@ -23,9 +23,9 @@ public SqlDriverPlanningHook(IServiceProvider services)
2323 public async Task OnSourceCodeGenerated ( string planner , RoleDialogModel msg , string language )
2424 {
2525 // envoke validate
26- if ( language != "sql" )
27- {
28- return ;
26+ if ( language != "sql" )
27+ {
28+ return ;
2929 }
3030
3131 var routing = _services . GetRequiredService < IRoutingService > ( ) ;
@@ -42,7 +42,7 @@ await HookEmitter.Emit<ISqlDriverHook>(_services, async (hook) =>
4242 var conversationStateService = _services . GetRequiredService < IConversationStateService > ( ) ;
4343 var conversationId = conversationStateService . GetConversationId ( ) ;
4444 msg . PostbackFunctionName = "execute_sql" ;
45- msg . RichContent = BuildRunQueryButton ( planner , msg . Content ) ;
45+ msg . RichContent = BuildRunQueryButton ( conversationId , msg . Content ) ;
4646 msg . StopCompletion = true ;
4747 return ;
4848 }
@@ -71,7 +71,7 @@ await HookEmitter.Emit<ISqlDriverHook>(_services, async (hook) =>
7171
7272 public async Task OnPlanningCompleted ( string planner , RoleDialogModel msg )
7373 {
74-
74+
7575 }
7676
7777 public async Task < string > GetSummaryAdditionalRequirements ( string planner , RoleDialogModel message )
@@ -91,8 +91,27 @@ private RichContent<IRichMessage> BuildRunQueryButton(string conversationId, str
9191 string pattern = @"```sql\s*([\s\S]*?)\s*```" ;
9292 var sql = Regex . Match ( text , pattern ) . Groups [ 1 ] . Value ;
9393 var state = _services . GetRequiredService < IConversationStateService > ( ) ;
94- var deleteTable = state . GetState ( "tmp_table" ) ;
95- var deleteSql = $ "DROP TABLE IF EXISTS { deleteTable } ;";
94+ var tmpTable = state . GetState ( "tmp_table" ) ;
95+
96+ var elements = new List < ElementButton > ( ) { } ;
97+ elements . Add ( new ElementButton
98+ {
99+ Type = "text" ,
100+ Title = "Execute SQL Statement" ,
101+ Payload = sql ,
102+ IsPrimary = true
103+ } ) ;
104+
105+ if ( tmpTable != string . Empty )
106+ {
107+ var deleteSql = $ "DROP TABLE IF EXISTS { tmpTable } ;";
108+ elements . Add ( new ElementButton
109+ {
110+ Type = "text" ,
111+ Title = "Delete Temp Table" ,
112+ Payload = deleteSql
113+ } ) ;
114+ }
96115
97116 return new RichContent < IRichMessage >
98117 {
@@ -105,23 +124,9 @@ private RichContent<IRichMessage> BuildRunQueryButton(string conversationId, str
105124 Message = new ButtonTemplateMessage
106125 {
107126 Text = text ,
108- Buttons = new List < ElementButton >
109- {
110- new ElementButton
111- {
112- Type = "text" ,
113- Title = "Execute the SQL Statement" ,
114- Payload = sql ,
115- IsPrimary = true
116- } ,
117- new ElementButton
118- {
119- Type = "text" ,
120- Title = "Purge Cache" ,
121- Payload = deleteSql
122- }
123- } . ToArray ( )
127+ Buttons = elements . ToArray ( )
124128 }
125129 } ;
130+
126131 }
127132}
0 commit comments