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

Method getMultiFileSDL

backend/api/v1/database_service.go:1214–1245  ·  view source on GitHub ↗
(engine storepb.Engine, metadata *storepb.DatabaseSchemaMetadata)

Source from the content-addressed store, hash-verified

1212}
1213
1214func (*DatabaseService) getMultiFileSDL(engine storepb.Engine, metadata *storepb.DatabaseSchemaMetadata) (*connect.Response[v1pb.DatabaseSDLSchema], error) {
1215 // Get multi-file schema from schema package
1216 result, err := schema.GetMultiFileDatabaseDefinition(engine, schema.GetDefinitionContext{
1217 SkipBackupSchema: true,
1218 }, metadata)
1219 if err != nil {
1220 return nil, connect.NewError(connect.CodeInternal, errors.Errorf("failed to generate multi-file SDL schema: %v", err))
1221 }
1222
1223 // Create ZIP archive
1224 var buf bytes.Buffer
1225 zipWriter := zip.NewWriter(&buf)
1226
1227 for _, file := range result.Files {
1228 writer, err := zipWriter.Create(file.Name)
1229 if err != nil {
1230 return nil, connect.NewError(connect.CodeInternal, errors.Errorf("failed to create zip entry %s: %v", file.Name, err))
1231 }
1232 if _, err := writer.Write([]byte(file.Content)); err != nil {
1233 return nil, connect.NewError(connect.CodeInternal, errors.Errorf("failed to write content to %s: %v", file.Name, err))
1234 }
1235 }
1236
1237 if err := zipWriter.Close(); err != nil {
1238 return nil, connect.NewError(connect.CodeInternal, errors.Errorf("failed to close zip writer: %v", err))
1239 }
1240
1241 return connect.NewResponse(&v1pb.DatabaseSDLSchema{
1242 Schema: buf.Bytes(),
1243 ContentType: "application/zip",
1244 }), nil
1245}

Callers 1

GetDatabaseSDLSchemaMethod · 0.95

Calls 3

ErrorfMethod · 0.80
CloseMethod · 0.65

Tested by

no test coverage detected