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

Method diffSchemaViaSDL

backend/api/v1/database_service.go:727–758  ·  view source on GitHub ↗

diffSchemaViaSDL handles PG/CockroachDB DiffSchema using omni SDL diff.

(ctx context.Context, req *v1pb.DiffSchemaRequest, engine storepb.Engine)

Source from the content-addressed store, hash-verified

725
726// diffSchemaViaSDL handles PG/CockroachDB DiffSchema using omni SDL diff.
727func (s *DatabaseService) diffSchemaViaSDL(ctx context.Context, req *v1pb.DiffSchemaRequest, engine storepb.Engine) (string, error) {
728 sourceMetadata, err := s.getSourceDBMetadata(ctx, req)
729 if err != nil {
730 return "", err
731 }
732 sourceSDL, err := schema.MetadataToSDL(engine, sourceMetadata)
733 if err != nil {
734 return "", errors.Wrap(err, "failed to generate source SDL")
735 }
736
737 // Resolve target schema text.
738 var targetSDL string
739 switch {
740 case req.GetSchema() != "":
741 // Schema text from GetDatabaseSchema (raw dump) — passed directly.
742 // pgDiffSDLMigration handles LoadSDL/LoadSQL fallback internally.
743 targetSDL = req.GetSchema()
744 case req.GetChangelog() != "":
745 targetMetadata, err := s.getSourceDBMetadata(ctx, &v1pb.DiffSchemaRequest{Name: req.GetChangelog()})
746 if err != nil {
747 return "", errors.Wrap(err, "failed to resolve target changelog")
748 }
749 targetSDL, err = schema.MetadataToSDL(engine, targetMetadata)
750 if err != nil {
751 return "", errors.Wrap(err, "failed to generate target SDL")
752 }
753 default:
754 return "", errors.Errorf("target must be either schema text or changelog")
755 }
756
757 return schema.DiffSDLMigration(engine, sourceSDL, targetSDL)
758}
759
760func (s *DatabaseService) getSourceDBMetadata(ctx context.Context, request *v1pb.DiffSchemaRequest) (*model.DatabaseMetadata, error) {
761 if strings.Contains(request.Name, common.ChangelogPrefix) {

Callers 1

DiffSchemaMethod · 0.95

Calls 6

getSourceDBMetadataMethod · 0.95
MetadataToSDLFunction · 0.92
DiffSDLMigrationFunction · 0.92
ErrorfMethod · 0.80
GetChangelogMethod · 0.65
GetSchemaMethod · 0.45

Tested by

no test coverage detected