public static object ToSchemaObject(this TableSchema table) { var columns = table.Columns.ToSchemaObject(); var indicies = table.Indexes.ToSchemaObject(); var columnItem = new { count = columns.Length, items = columns }; var indicesItem = new { count = indicies.Length, items = indicies }; return(new { name = table.Name, isRoot = table.IsRoot(), parents = table.GetParents().ToNameArray(), desc = table.Description, fullName = table.FullName, hasPk = table.HasPrimaryKey, owner = table.Owner, sortName = table.SortName, delFlag = (table.GetDeleteFlagColumn() == null ? string.Empty : table.GetDeleteFlagColumn().Name), singularUidColumn = (table.GetSingularIdentifierColumn() == null ? string.Empty : table.GetSingularIdentifierColumn().Name), singularPkColumn = (table.GetSingularKeyColumn() == null ? string.Empty : table.GetSingularKeyColumn().Name), versionDateColumn = (table.GetVersionDateColumn() == null ? string.Empty : table.GetVersionDateColumn().Name), versionUserColumn = (table.GetVersionUserColumn() == null ? string.Empty : table.GetVersionUserColumn().Name), hasCompositeKey = table.HasCompositePrimaryKey(), hasCrossSchemaRelationships = table.HasCrossSchemaRelationships(), hasDefaultOwner = table.HasDefaultOnwer(), hasDeleteFlag = table.HasDeleteFlag(), hasForeignKeys = table.HasForeignKeys(), hasUidColumns = table.HasIdentifierColumns(), hasMultipleUidColumns = table.HasMultipleIdentifierColumns(), hasSingleUidColumn = table.HasSingleIdentifierColumn(), hasSingularKey = table.HasSingularPrimaryKey(), hasUniqueIndicies = table.HasUniqueIndices(), hasVersionDate = table.HasVersionDateColumn(), hasVersionUser = table.HasVersionUserColumn(), columns = columnItem, indices = indicesItem, auditColumns = table.GetAuditColumns().ToNameArray(), children = table.GetChildren().ToNameArray(), uidColumns = table.GetIdentifierColumns().ToNameArray(), fkColumns = table.ForeignKeyColumns.ToNameArray(), nonFkColumns = table.NonForeignKeyColumns.ToNameArray(), nonKeyColumns = table.NonKeyColumns.ToNameArray(), nonPkColumns = table.NonPrimaryKeyColumns.ToNameArray(), nonPkIndices = table.Indexes.GetNonPkIndices().ToNameArray() }); }