private void AddProperty( DataCollectionMetadata tableDef, List <Utils.ColumnDescription> columnDescriptions, List <string> properties, TableColumn tableColumn, string csharpTypeName) { var columnName = tableColumn.Name; var columnNameCS = Utils.Utils.CSharpifyName(columnName); var columnDescription = new Utils.ColumnDescription { CassandraColumnName = columnName, CamelCaseName = Utils.Utils.CamelCase(columnName), CSharpName = columnNameCS, IsPartitionKey = tableDef.PartitionKeys.Any(k => k.Name == columnName), IsClusteringKey = tableDef.ClusteringKeys.Any(k => k.Item1.Name == columnName), CassandraType = tableColumn.TypeCode.ToString(), CSharpType = csharpTypeName, IsFrozen = this.isFrozen, }; columnDescriptions.Add(columnDescription); if (columnDescription.IsPartitionKey) { properties.Add(" [PartitionKey]"); } if (columnDescription.IsFrozen) { properties.Add(" [FrozenValue]"); } if (columnDescription.IsClusteringKey) { properties.Add($" [ClusteringKey(0, Name = \"{columnName}\")]"); } else { properties.Add($" [Column(\"{columnName}\")]"); } properties.Add($" [JsonProperty(\"{columnName}\")]"); properties.Add($" public {csharpTypeName} {columnNameCS} {{ get; set; }}"); properties.Add(""); }
private void CreateCS(KeyspaceMetadata keySpace, DataCollectionMetadata tableDef) { var columnDescriptions = new List <Utils.ColumnDescription>(); var className = Utils.Utils.CSharpifyName(tableDef.Name); this.swaggerRoot.Definitions.Add(className, new Schema()); Utils.Utils.WriteLineGreen($" Starting table {tableDef.Name}, class {className}"); var properties = new List <string> { "" }; foreach (var tableColumn in tableDef.TableColumns) { this.isFrozen = false; Utils.Utils.WriteLineGreen($" Table {tableDef.Name}, class {className}, column {tableColumn.Name}"); var csharpTypeName = this.GetCSharpTypeName(tableColumn); if (csharpTypeName != null) { AddProperty(tableDef, columnDescriptions, properties, tableColumn, csharpTypeName); } else { Utils.Utils.WriteLineGreen($" Table {tableDef.Name}, class {className}, column {tableColumn.Name}: DON'T KNOW HOW TO HANDLE TYPE {tableColumn.TypeCode}"); } } PopulateIsIndexField(columnDescriptions, tableDef); this.CreateCSFile( className, properties, "using Cassandra.Mapping.Attributes;", $@"[Table(""{tableDef.Name}"", Keyspace = ""{keySpace.Name}"" )]"); this.typeDescriptions.Add( new Utils.TypeDescription { CassandraTableName = tableDef.Name, CSharpName = className, ColumnDescriptions = columnDescriptions }); }
private void PopulateIsIndexField(List <ColumnDescription> columnDescriptions, DataCollectionMetadata dataCollectionDef) { var tableDef = dataCollectionDef as TableMetadata; if (tableDef != null) { foreach (var index in tableDef.Indexes) { var indexedPropertyName = Utils.Utils.CSharpifyName(index.Value.Target); var indexedProperty = columnDescriptions.FirstOrDefault(c => c.CSharpName == indexedPropertyName); if (indexedProperty != null) { indexedProperty.IsIndex = true; } } } }
public void PutMetaDataTest() { var client = new MongoClient("mongodb://localhost:27017"); var db = client.GetDatabase("hra"); BsonClassMap.RegisterClassMap<DataCollectionMetadata>(cm => { cm.AutoMap(); cm.MapIdMember(c => c.CollectionName); }); //db.CreateCollectionAsync("collectionMetadata").Wait(); //t.Start(); //t.Wait(); var items = db.GetCollection<DataCollectionMetadata>("collectionMetadata"); var s = new DataCollectionMetadata(); s.CollectionName = "incumbent"; s.DataSourceName = "hra"; s.DisplayName = "Incumbent"; //Dimensions are slicers var yearColumnDimension = new DimensionColumnMetadata(); yearColumnDimension.ColumnIndex = 22; yearColumnDimension.ColumnName = "Year"; yearColumnDimension.DataType = ColumnDataTypes.Int32; yearColumnDimension.DisplayName = "Year"; yearColumnDimension.IsDefault = true; var jobFamilyDimension = new DimensionColumnMetadata(); jobFamilyDimension.ColumnIndex = 12; jobFamilyDimension.ColumnName = "Job_Family"; jobFamilyDimension.DisplayName = "Job Family"; jobFamilyDimension.DataType = ColumnDataTypes.String; var jobTrackDimension = new DimensionColumnMetadata(); jobTrackDimension.ColumnIndex = 14; jobTrackDimension.ColumnName = "Job_Track"; jobTrackDimension.DisplayName = "Job Track"; jobTrackDimension.DataType = ColumnDataTypes.String; var jobLevelDimension = new DimensionColumnMetadata(); jobLevelDimension.ColumnIndex = 16; jobLevelDimension.ColumnName = "Job_Level"; jobLevelDimension.DisplayName = "Job Level"; jobLevelDimension.DataType = ColumnDataTypes.String; var orgTypeDimension = new DimensionColumnMetadata(); orgTypeDimension.ColumnIndex = 7; orgTypeDimension.ColumnName = "org_type"; orgTypeDimension.DisplayName = "Organization Type"; orgTypeDimension.DataType = ColumnDataTypes.String; var orgType = new DimensionColumnMetadata(); orgType.ColumnIndex = 7; orgType.ColumnName = "org_type"; orgType.DataType = ColumnDataTypes.String; orgType.DisplayName = "Organization Type"; var basePay = new MeasureDataColumnMetadata(); basePay.ColumnIndex = 23; basePay.ColumnName = "Base_Pay"; basePay.DataType = ColumnDataTypes.Double; basePay.DisplayName = "Base Pay"; basePay.IsDefault = true; var yearColumn = new DataColumnMetadata(); yearColumn.ColumnIndex = 22; yearColumn.ColumnName = "Year"; yearColumn.DataType = ColumnDataTypes.Int32; yearColumn.DisplayName = "Year"; var jobFamily = new FilterDataColumnMetadata(); jobFamily.ColumnIndex = 12; jobFamily.ColumnName = "Job_Family"; jobFamily.DisplayName = "Job Family"; basePay.DataType = ColumnDataTypes.String; var jobTrack = new FilterDataColumnMetadata(); jobTrack.ColumnIndex = 14; jobTrack.ColumnName = "Job_Track"; jobTrack.DisplayName = "Job Track"; jobTrack.FilterDependencyColumns.Add(jobFamily); basePay.DataType = ColumnDataTypes.String; var jobLevel = new FilterDataColumnMetadata(); jobLevel.ColumnIndex = 16; jobLevel.ColumnName = "Job_Level"; jobLevel.DisplayName = "Job Level"; basePay.DataType = ColumnDataTypes.String; s.Columns.Add(yearColumn); s.Columns.Add(orgType); s.Columns.Add(basePay); s.Columns.Add(jobFamily); s.Columns.Add(jobTrack); s.Columns.Add(jobLevel); s.Dimensions.Add(yearColumnDimension); s.Dimensions.Add(jobFamilyDimension); s.Dimensions.Add(jobTrackDimension); s.Dimensions.Add(jobLevelDimension); s.Dimensions.Add(orgTypeDimension); s.Measures.Add(basePay); //do filters s.Filters.Add(jobFamily); s.Filters.Add(jobTrack); s.Filters.Add(jobLevel); items.InsertOneAsync(s).Wait(); }