コード例 #1
0
        public IActionResult Describe([FromBody] Describe describe)
        {
            return(this.Intercept(() =>
            {
                var results = new List <List <object> >();

                try
                {
                    using (var dbReader = dbConnection.ExecuteQuery($"pragma table_info({describe.TableName.TrimEnd(';')})"))
                    {
                        var reader = dbReader.Reader;
                        while (reader.Read())
                        {
                            var rowResults = new List <object>();
                            foreach (var column in Model.Describe.DescribeColumns)
                            {
                                var columnOrdinal = reader.GetOrdinal(column);
                                rowResults.Add(reader.GetValue(columnOrdinal));
                            }

                            results.Add(rowResults);
                        }

                        return Ok(DescribeResponse.Ok(describe, results));
                    }
                }
                catch (Exception err)
                {
                    return Ok(DescribeResponse.Failed(err.Message));
                }
            }));
        }
コード例 #2
0
 public DescribeResultViewModel(DescribeResponse response, RegistryViewModel registry, HttpRequest request)
 {
     this.Table   = response.Query.TableName;
     this.Columns = response.Columns;
     this.Rows    = response.Results;
     this.Links.Add(new LinkViewModel($"/api", "tables", registry.Entries.First().GetRedirectedAuthorityUri(request), string.Empty, string.Empty));
     foreach (var registryEntry in registry.Entries)
     {
         if (registryEntry.Tags.Contains("registry"))
         {
             continue;
         }
         Links.Add(new LinkViewModel($"/api/query/describe {Table}/{WebUtility.UrlEncode(registryEntry.GetRedirectedUri(request))}", "describe", registryEntry.GetRedirectedAuthorityUri(request), registryEntry.GetRedirectedUri(request), registryEntry.Tags));
         Links.Add(new LinkViewModel($"/api/query/select * from {Table} limit 100/{WebUtility.UrlEncode(registryEntry.GetRedirectedUri(request))}", "query", registryEntry.GetRedirectedAuthorityUri(request), registryEntry.GetRedirectedUri(request), registryEntry.Tags));
     }
 }