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)); } })); }
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)); } }