/// <summary> /// Invokes the specified environment information. /// </summary> public string Invoke(EnvironmentInfo environmentInfo, InvocationInfo invocationInfo, IReadOnlyList <InvocationMethodParameterInfo> parameters) { PluginLoader.AttachPlugins(); InvokeOutput output = null; var trace = Fun((string message) => { AppDomain.CurrentDomain.SetData("trace", message); }); using (var boaContext = new BOAContext(environmentInfo, trace)) { output = Invoker.Invoke(boaContext, trace, invocationInfo, parameters); } return(SerializeToJson(output)); }
internal static object CalculateFrom(ValueAccessInfo valueAccessInfo, MethodDefinition methodDefinition, InvokeOutput invocationOutput, EnvironmentInfo environmentInfo, Dictionary <string, string> variablesMap) { var input = new CompileSQLOperationInput { MethodDefinition = methodDefinition, MethodParametersInJson = invocationOutput.InvocationParameters, MethodReturnValueInJson = invocationOutput.ExecutionResponseAsJson, SQL = valueAccessInfo.Text.Trim(), VariablesMap = variablesMap }; var sqlOperationOutput = CompileSQLOperation(input); if (valueAccessInfo.FetchFromDatabase == false) { if (sqlOperationOutput.SqlParameters.Count == 1) { if (input.SQL != sqlOperationOutput.SQL) { return(sqlOperationOutput.SqlParameters[0].Value); } var isNamedParameter = input.SQL == "@output" || methodDefinition.Parameters.Any(p => _.IntellisensePrefix + p.Name == input.SQL) || variablesMap.ContainsKey(input.SQL); if (isNamedParameter) { return(sqlOperationOutput.SqlParameters[0].Value); } } return(valueAccessInfo.Text); } if (string.IsNullOrWhiteSpace(valueAccessInfo.DatabaseName)) { return("Hata: DatabaseName is empty"); } var database = Databases.Boa; if (!Enum.TryParse(valueAccessInfo.DatabaseName, true, out database)) { return("Hata: DatabaseName is not recognized." + valueAccessInfo.DatabaseName); } DataTable sqlToDataTable() { var boaContext = new BOAContext(environmentInfo, Console.Write); var command = boaContext.Context.DBLayer.GetDBCommand(database, sqlOperationOutput.SQL, new SqlParameter[0], CommandType.Text); foreach (var item in sqlOperationOutput.SqlParameters) { boaContext.Context.DBLayer.AddInParameter(command, item.Name, item.SqlDbType, item.Value); } var reader = command.ExecuteReader(); var dt = new DataTable(); dt.Load(reader); reader.Close(); boaContext.Dispose(); return(dt); } var dataTable = sqlToDataTable(); if (dataTable.Columns.Count == 1) { var list = (IList)Activator.CreateInstance(typeof(List <>).MakeGenericType(dataTable.Columns[0].DataType)); foreach (DataRow row in dataTable.Rows) { list.Add(row[0]); } if (list.Count == 1) { return(list[0]); } return(list); } return(dataTable); }
public static bool IsSuccess(InvokeOutput invokeOutput) { return(invokeOutput.Error == null); }