public static async Task <ClauseFieldType> GetType(ISchemaRetriever schemaRetriever, string fieldName) { Ensure.IsNotNull(schemaRetriever, nameof(schemaRetriever), "schemaRetriever cannot be null."); Ensure.IsNotNullOrEmpty(fieldName, nameof(fieldName)); var dic = await schemaRetriever.RetrieveTableSchema(); // if we failed to get this field type, treat as Unknown if (dic.Contains(fieldName) == false) { return(ClauseFieldType.Unknown); } var fieldType = dic[fieldName]; switch (fieldType) { case "integer": case "long": case "float": case "double": return(ClauseFieldType.Numeric); case "string": return(ClauseFieldType.Text); case "date": return(ClauseFieldType.Date); default: return(ClauseFieldType.Unknown); } }
private void tvSchemas_AfterExpand(object sender, TreeViewEventArgs e) { e.Node.Nodes.Clear(); var serverInfo = e.Node.Tag as ServerInfo; ISchemaRetriever server = SchemaRetrieverFactory.GetSchemaRetriever(serverInfo); foreach (var schema in server.GetSchemas(serverInfo)) { e.Node.Nodes.Add(new TreeNode(schema, 1, 1)); } }
private void lvTables_SelectedIndexChanged(object sender, EventArgs e) { if (tvSchemas.SelectedNode != null && tvSchemas.SelectedNode.Parent != null && lvTables.SelectedItems.Count == 1) { lvColumns.Items.Clear(); var serverInfo = tvSchemas.SelectedNode.Parent.Tag as ServerInfo; var schema = tvSchemas.SelectedNode.Text; ISchemaRetriever server = SchemaRetrieverFactory.GetSchemaRetriever(serverInfo); if (lvTables.SelectedItems.Count == 1) { var tableInfo = lvTables.SelectedItems[0].Tag as TableInfo; tableInfo.Columns = server.GetColumns(serverInfo, tableInfo, schema); foreach (var columnInfo in tableInfo.Columns) { var item = lvColumns.Items.Add(columnInfo.ColumnName); item.SubItems.Add(columnInfo.DataType.Name); item.SubItems.Add(columnInfo.Size.ToString()); //if(columnInfo.Precision.HasValue) item.SubItems.Add(columnInfo.Precision.ToString()); //if(columnInfo.Scale.HasValue) item.SubItems.Add(columnInfo.Scale.ToString()); item.Tag = columnInfo; if (columnInfo.IsKey) { if (tableInfo.Keys.Any(k => k.ColumnName.Equals(columnInfo.ColumnName, StringComparison.InvariantCultureIgnoreCase) && k.KeyType == KeyConstraintTypes.Primary)) { var constraint = tableInfo.Keys.First(k => k.ColumnName.Equals(columnInfo.ColumnName, StringComparison.InvariantCultureIgnoreCase) && k.KeyType == KeyConstraintTypes.Primary); item.SubItems.Add(constraint.ConstraintName); } item.ImageIndex = 3; } else if (columnInfo.IsForeignKey) { item.ImageIndex = 4; if (tableInfo.Keys.Any(k => k.ColumnName.Equals(columnInfo.ColumnName, StringComparison.InvariantCultureIgnoreCase) && k.KeyType == KeyConstraintTypes.Foreign)) { var constraint = tableInfo.Keys.First(k => k.ColumnName.Equals(columnInfo.ColumnName, StringComparison.InvariantCultureIgnoreCase) && k.KeyType == KeyConstraintTypes.Foreign); item.SubItems.Add(constraint.ConstraintName); } } else if (columnInfo.IsUnique) { item.ImageIndex = 5; if (tableInfo.Keys.Any(k => k.ColumnName.Equals(columnInfo.ColumnName, StringComparison.InvariantCultureIgnoreCase) && k.KeyType == KeyConstraintTypes.Unique)) { var constraint = tableInfo.Keys.First(k => k.ColumnName.Equals(columnInfo.ColumnName, StringComparison.InvariantCultureIgnoreCase) && k.KeyType == KeyConstraintTypes.Unique); item.SubItems.Add(constraint.ConstraintName); } } } } } }
private void tvSchemas_AfterSelect(object sender, TreeViewEventArgs e) { if (e.Node.Parent != null) { lvTables.Items.Clear(); lvColumns.Items.Clear(); var serverInfo = e.Node.Parent.Tag as ServerInfo; ISchemaRetriever server = SchemaRetrieverFactory.GetSchemaRetriever(serverInfo); foreach (var table in server.GetTables(serverInfo, e.Node.Text)) { var item = lvTables.Items.Add(table.TableName, String.Format("{0}.{1}", table.Owner, table.TableName), 2); item.Tag = table; } } }
/// <inheritdoc/> public void Visit(ElasticSearchDSL elasticSearchDSL) { Ensure.IsNotNull(elasticSearchDSL, nameof(elasticSearchDSL)); // Preparing the schema with the index name to be used later schemaRetriever = schemaRetrieverFactory.Make(elasticSearchDSL.IndexName); // base query elasticSearchDSL.Query.Accept(this); var queryStringBuilder = new StringBuilder(); var(databaseName, tableName) = KustoDatabaseTableNames.FromElasticIndexName(elasticSearchDSL.IndexName, defaultDatabaseName); // when an index-pattern doesn't have a default time filter the query element can be empty var translatedQueryExpression = !string.IsNullOrEmpty(elasticSearchDSL.Query.KustoQL) ? $"| {elasticSearchDSL.Query.KustoQL}" : string.Empty; // Aggregations if (elasticSearchDSL.Query.Bool != null) { queryStringBuilder.Append($"{KustoQLOperators.Let} _data = database(\"{databaseName}\").{tableName} {translatedQueryExpression};"); // Aggregations if (elasticSearchDSL.Aggregations?.Count > 0) { queryStringBuilder.Append('\n').Append($"(_data | {KustoQLOperators.Summarize} "); foreach (var(_, aggregation) in elasticSearchDSL.Aggregations) { aggregation.Accept(this); queryStringBuilder.Append($"{aggregation.KustoQL} "); } queryStringBuilder.Append("| as aggs);"); } // hits (projections...) // The size is deserialized property // therefore we check 'Size >= 0' to protect the query. if (elasticSearchDSL.Size >= 0) { queryStringBuilder.Append("\n(_data "); if (elasticSearchDSL.Size > 0) { // we only need to sort if we're returning hits var orderingList = new List <string>(); foreach (var sortClause in elasticSearchDSL.Sort) { sortClause.Accept(this); if (!string.IsNullOrEmpty(sortClause.KustoQL)) { orderingList.Add(sortClause.KustoQL); } } if (orderingList.Count > 0) { queryStringBuilder.Append($"| {KustoQLOperators.OrderBy} {string.Join(", ", orderingList)} "); } } queryStringBuilder.Append($"| {KustoQLOperators.Limit} {elasticSearchDSL.Size} | as hits)"); } } else { // ViewSingleDocument query queryStringBuilder.Append($"database(\"{databaseName}\").{tableName} {translatedQueryExpression} | as hits;"); } elasticSearchDSL.KustoQL = queryStringBuilder.ToString(); }
private void GetTableColumns() { ISchemaRetriever schema = SchemaRetrieverFactory.GetSchemaRetriever(_server); _table.Columns = schema.GetColumns(_server, _table); }
private void LoadActiveSqlServers() { ISchemaRetriever server = SchemaRetrieverFactory.GetSchemaRetriever(ServerTypes.SqlServer); LoadServers(server.GetServers().ToList()); }