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

Method DiffMetadata

backend/api/v1/sql_service.go:2178–2204  ·  view source on GitHub ↗
(_ context.Context, req *connect.Request[v1pb.DiffMetadataRequest])

Source from the content-addressed store, hash-verified

2176}
2177
2178func (*SQLService) DiffMetadata(_ context.Context, req *connect.Request[v1pb.DiffMetadataRequest]) (*connect.Response[v1pb.DiffMetadataResponse], error) {
2179 request := req.Msg
2180 switch request.Engine {
2181 case v1pb.Engine_MYSQL, v1pb.Engine_POSTGRES, v1pb.Engine_TIDB, v1pb.Engine_ORACLE, v1pb.Engine_MSSQL:
2182 default:
2183 return nil, connect.NewError(connect.CodeInvalidArgument, errors.Errorf("unsupported engine: %v", request.Engine))
2184 }
2185 if request.SourceMetadata == nil || request.TargetMetadata == nil {
2186 return nil, connect.NewError(connect.CodeInvalidArgument, errors.Errorf("source_metadata and target_metadata are required"))
2187 }
2188 storeSourceMetadata := convertV1DatabaseMetadata(request.SourceMetadata)
2189 storeTargetMetadata := convertV1DatabaseMetadata(request.TargetMetadata)
2190
2191 // Convert metadata to model.DatabaseMetadata for diffing
2192 isObjectCaseSensitive := true
2193 sourceDBSchema := model.NewDatabaseMetadata(storeSourceMetadata, nil, nil, storepb.Engine(request.Engine), isObjectCaseSensitive)
2194 targetDBSchema := model.NewDatabaseMetadata(storeTargetMetadata, nil, nil, storepb.Engine(request.Engine), isObjectCaseSensitive)
2195
2196 migrationSQL, err := schema.DiffMigration(storepb.Engine(request.Engine), sourceDBSchema, targetDBSchema)
2197 if err != nil {
2198 return nil, connect.NewError(connect.CodeInternal, errors.Wrapf(err, "failed to compute diff between source and target schemas"))
2199 }
2200
2201 return connect.NewResponse(&v1pb.DiffMetadataResponse{
2202 Diff: migrationSQL,
2203 }), nil
2204}
2205
2206func resolveDataSourceID(ctx context.Context, instance *store.InstanceMessage, dataSourceID string, statement string, allowAdminDataSource bool) (string, error) {
2207 if dataSourceID != "" {

Callers

nothing calls this directly

Calls 4

NewDatabaseMetadataFunction · 0.92
DiffMigrationFunction · 0.92
ErrorfMethod · 0.80

Tested by

no test coverage detected