MCPcopy Create free account
hub / github.com/bytebase/bytebase / writeCreateTables

Function writeCreateTables

backend/plugin/schema/pg/metadata_migration.go:679–704  ·  view source on GitHub ↗
(out *strings.Builder, diff *schema.MetadataDiff)

Source from the content-addressed store, hash-verified

677}
678
679func writeCreateTables(out *strings.Builder, diff *schema.MetadataDiff) error {
680 maps := buildCreateObjectMaps(diff)
681 graph := base.NewGraph()
682 for _, id := range sortedMapKeys(maps.tables) {
683 graph.AddNode(id)
684 }
685 for tableID, tableDiff := range maps.tables {
686 for _, fk := range tableDiff.NewTable.GetForeignKeys() {
687 depID := getMigrationObjectID(fk.GetReferencedSchema(), fk.GetReferencedTable())
688 if _, ok := maps.tables[depID]; ok {
689 graph.AddEdge(depID, tableID)
690 }
691 }
692 }
693
694 orderedIDs, err := graph.TopologicalSort()
695 if err != nil {
696 orderedIDs = sortedMapKeys(maps.tables)
697 }
698 for _, id := range orderedIDs {
699 if err := writeTableDiff(out, maps.tables[id]); err != nil {
700 return err
701 }
702 }
703 return nil
704}
705
706func writeAlterTables(out *strings.Builder, diff *schema.MetadataDiff) error {
707 for _, tableDiff := range diff.TableChanges {

Callers 1

writeCreateOrAlterPhaseFunction · 0.85

Calls 11

AddNodeMethod · 0.95
AddEdgeMethod · 0.95
TopologicalSortMethod · 0.95
NewGraphFunction · 0.92
buildCreateObjectMapsFunction · 0.85
sortedMapKeysFunction · 0.85
writeTableDiffFunction · 0.85
getMigrationObjectIDFunction · 0.70
GetForeignKeysMethod · 0.45
GetReferencedSchemaMethod · 0.45
GetReferencedTableMethod · 0.45

Tested by

no test coverage detected