(engine storepb.Engine, metadata *storepb.DatabaseSchemaMetadata)
| 1212 | } |
| 1213 | |
| 1214 | func (*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 | } |
no test coverage detected