public Task <SpSystemApiInfo> GetSystemApi() { var ret = new SpSystemApiInfo() { AppName = _targetType.Name, AppVersion = "*", ProcInfos = _spInfos }; return(Task.FromResult(ret)); }
public async Task <SpSystemApiInfo> GetSystemApi() { using var sqlConnection = new SqlConnection(ConnectionStringReadOnly); using var sqlCommand = new SqlCommand("api.System_api", sqlConnection); var sqlParameters = new List <SqlParameter>() { new SqlParameter("@context", SqlDbType.NVarChar, -1) { Direction = ParameterDirection.InputOutput, Value = "$$" }, new SqlParameter("@api", SqlDbType.NVarChar, -1) { Direction = ParameterDirection.Output }, }; //create command and run it sqlCommand.CommandType = CommandType.StoredProcedure; sqlCommand.Parameters.AddRange(sqlParameters.ToArray()); sqlConnection.Open(); try { await sqlCommand.ExecuteNonQueryAsync(); } catch (SqlException ex) { HandleException(ex); throw; } var api = sqlParameters.Find(x => x.ParameterName == "@api").Value as string; api = api.Replace("'sql_variant'", "'variant'"); var ret = new SpSystemApiInfo { ProcInfos = JsonConvert.DeserializeObject <SpInfo[]>(api), AppName = sqlParameters.Find(x => x.ParameterName == "@appName").Value as string, AppVersion = sqlParameters.Find(x => x.ParameterName == "@appVersion").Value as string //context }; //remove @ from param names and add return values foreach (var procInfo in ret.ProcInfos) { foreach (var paramInfo in procInfo.Params) { paramInfo.ParamName = paramInfo.ParamName.Substring(1); } //add return value var paramList = procInfo.Params.ToList(); paramList.Add(new SpParamInfo() { IsOutput = true, ParamName = "returnValue", SystemTypeName = "int", UserTypeName = "int", Length = 4 }); procInfo.Params = paramList.ToArray(); } return(ret); }