public void Generate(DatabaseDefinition databaseDefinition) { Log(LogSeverity.Information, "Starting on {DatabaseName}.", "BimGenerator", DatabaseName); var root = new BimGeneratorRoot { Model = new BimGeneratorModel() }; BimHelper.SetDefaultAnnotations(root.Model); BimHelper.SetDefaultDataSources(root.Model, DatabaseName); var relationShipRegistrations = new RelationShipRegistrations(); foreach (var sqlTable in databaseDefinition.GetTables()) { if (!Context.Customizer.ShouldSkip(sqlTable.SchemaAndTableName) && !DocumenterWriterBase.ShouldSkipKnownTechnicalTable(sqlTable.SchemaAndTableName) ) { root.Model.Tables.Add(GenerateTable(sqlTable)); Context.Logger.Log(LogSeverity.Debug, "Table {TableName} added to bim model.", "BimGenerator", sqlTable.SchemaAndTableName); GatherReferencedTablesByFK(relationShipRegistrations, sqlTable); } } GenerateReferences(relationShipRegistrations, root.Model); var jsonString = ToJson(root); jsonString = RemoveInvalidEmptyItems(jsonString); WriteJson(jsonString); }
private static string ToJson(BimGeneratorRoot root) { var jsonOptions = new JsonSerializerOptions { WriteIndented = true, Encoder = JavaScriptEncoder.UnsafeRelaxedJsonEscaping, PropertyNamingPolicy = JsonNamingPolicy.CamelCase }; var json = JsonSerializer.Serialize(root, jsonOptions); return(json); }