This commit is contained in:
Haiping Chen 2024-11-06 16:03:32 -06:00
commit 31e03685ed
3 changed files with 22 additions and 41 deletions

View file

@ -40,12 +40,22 @@ public class SideCarAspect
return typeof(SideCarAspect).GetMethod(name, BindingFlags.NonPublic | BindingFlags.Static);
}
private object CallAsyncMethod(IServiceProvider serviceProvider, Type retType, string methodName, Func<object[], object> target, object[] args)
private (IConversationSideCar?, MethodInfo?) GetSideCarMethod(IServiceProvider serviceProvider, string methodName, object[] args)
{
var sidecar = serviceProvider.GetService<IConversationSideCar>();
var sidecarMethod = sidecar?.GetType()?.GetMethod(methodName, BindingFlags.Public | BindingFlags.Instance);
var paramTypes = args.Select(x => x.GetType()).ToList();
var sidecarMethod = sidecar?.GetType()?.GetMethods(BindingFlags.Public | BindingFlags.Instance)
.FirstOrDefault(x => x.Name == methodName && x.GetParameters().Select(p => p.ParameterType).SequenceEqual(paramTypes));
return (sidecar, sidecarMethod);
}
private object CallAsyncMethod(IServiceProvider serviceProvider, Type retType, string methodName, Func<object[], object> target, object[] args)
{
object value;
var (sidecar, sidecarMethod) = GetSideCarMethod(serviceProvider, methodName, args);
var enabled = sidecar != null && sidecar.IsEnabled() && sidecarMethod != null;
if (retType == typeof(void))
@ -77,11 +87,10 @@ public class SideCarAspect
private object CallSyncMethod(IServiceProvider serviceProvider, Type retType, string methodName, Func<object[], object> target, object[] args)
{
var sidecar = serviceProvider.GetService<IConversationSideCar>();
var sidecarMethod = sidecar?.GetType()?.GetMethod(methodName, BindingFlags.Public | BindingFlags.Instance);
object value;
var enabled = sidecar != null && sidecarMethod != null && sidecar.IsEnabled();
var (sidecar, sidecarMethod) = GetSideCarMethod(serviceProvider, methodName, args);
var enabled = sidecar != null && sidecar.IsEnabled() && sidecarMethod != null;
if (retType == typeof(void))
{

View file

@ -64,18 +64,13 @@ public class HandleExcelRequestFn : IFunctionCallback
message.Content = "No excel files found in the conversation";
return true;
}
if (!DeleteTable())
{
message.Content = "Failed to clear existing tables. Please manually delete all existing tables";
}
else
{
var resultList = GetResponeFromDialogs(dialogs);
var states = _serviceProvider.GetRequiredService<IConversationStateService>();
message.Content = GenerateSqlExecutionSummary(resultList);
states.SetState("excel_import_result",message.Content);
}
var resultList = GetResponeFromDialogs(dialogs);
var states = _serviceProvider.GetRequiredService<IConversationStateService>();
message.Content = GenerateSqlExecutionSummary(resultList);
states.SetState("excel_import_result",message.Content);
return true;
}
@ -122,28 +117,12 @@ public class HandleExcelRequestFn : IFunctionCallback
var bytes = _fileStorage.GetFileBytes(file.FileStorageUrl);
var workbook = ConvertToWorkBook(bytes);
//var dbService = CreateDbService(DbServiceType.MySql);
var currentCommandList = _mySqlService.WriteExcelDataToDB(workbook);
sqlCommandList.AddRange(currentCommandList);
}
return sqlCommandList;
}
private bool DeleteTable()
{
try
{
//_mySqlService.DeleteTableSqlQuery();
return true;
}
catch (Exception ex)
{
_logger.LogError(ex, "Failed to delete table");
return false;
}
}
private string GenerateSqlExecutionSummary(List<SqlContextOut> messageList)
{
var stringBuilder = new StringBuilder();

View file

@ -31,13 +31,6 @@ namespace BotSharp.Plugin.ExcelHandler.Services
{
try
{
/*using var mySqlDbConnection = _mySqlDbHelpers.GetDbConnection();
var tableNames = GetAllTableSchema(mySqlDbConnection);
if (tableNames.IsNullOrEmpty())
{
return true;
}*/
return true;
}
catch (Exception ex)
@ -232,7 +225,7 @@ namespace BotSharp.Plugin.ExcelHandler.Services
_columnTypes?.Insert(0, "INT UNSIGNED AUTO_INCREMENT");
}*/
var createTableSql = $"CREATE TABLE if not exists {tableName} ( \n";
var createTableSql = $"DROP TABLE IF EXISTS {tableName}; CREATE TABLE if not exists {tableName} ( \n";
createTableSql += string.Join(", \n", headerColumns.Select((x, i) => $"`{x}` {_columnTypes[i]}"));
var indexSql = string.Join(", \n", headerColumns.Select(x => $"KEY `idx_{tableName}_{x}` (`{x}`)"));
createTableSql += $", \n{indexSql}\n);";