diff --git a/src/Infrastructure/BotSharp.Abstraction/SideCar/Attributes/SideCarAspect.cs b/src/Infrastructure/BotSharp.Abstraction/SideCar/Attributes/SideCarAspect.cs index 6580c56c..72cdb4e6 100644 --- a/src/Infrastructure/BotSharp.Abstraction/SideCar/Attributes/SideCarAspect.cs +++ b/src/Infrastructure/BotSharp.Abstraction/SideCar/Attributes/SideCarAspect.cs @@ -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 target, object[] args) + + private (IConversationSideCar?, MethodInfo?) GetSideCarMethod(IServiceProvider serviceProvider, string methodName, object[] args) { var sidecar = serviceProvider.GetService(); - 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 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 target, object[] args) { - var sidecar = serviceProvider.GetService(); - 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)) { diff --git a/src/Plugins/BotSharp.Plugin.ExcelHandler/Functions/HandleExcelRequestFn.cs b/src/Plugins/BotSharp.Plugin.ExcelHandler/Functions/HandleExcelRequestFn.cs index 4620e16c..f72492e3 100644 --- a/src/Plugins/BotSharp.Plugin.ExcelHandler/Functions/HandleExcelRequestFn.cs +++ b/src/Plugins/BotSharp.Plugin.ExcelHandler/Functions/HandleExcelRequestFn.cs @@ -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(); - message.Content = GenerateSqlExecutionSummary(resultList); - states.SetState("excel_import_result",message.Content); - } + var resultList = GetResponeFromDialogs(dialogs); + var states = _serviceProvider.GetRequiredService(); + + 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 messageList) { var stringBuilder = new StringBuilder(); diff --git a/src/Plugins/BotSharp.Plugin.ExcelHandler/Services/MySqlService.cs b/src/Plugins/BotSharp.Plugin.ExcelHandler/Services/MySqlService.cs index af08194c..34c37719 100644 --- a/src/Plugins/BotSharp.Plugin.ExcelHandler/Services/MySqlService.cs +++ b/src/Plugins/BotSharp.Plugin.ExcelHandler/Services/MySqlService.cs @@ -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);";