diff --git a/backend/internal/domain/discovery/model.go b/backend/internal/domain/discovery/model.go index d78c3d7..af566ff 100644 --- a/backend/internal/domain/discovery/model.go +++ b/backend/internal/domain/discovery/model.go @@ -27,7 +27,7 @@ type Bucket struct { // vorjahr_unbestaetigt|abgesagt). type DiscoveredMarket struct { ID uuid.UUID `json:"id"` - BucketID uuid.UUID `json:"bucket_id"` + BucketID *uuid.UUID `json:"bucket_id"` MarktName string `json:"markt_name"` Stadt string `json:"stadt"` Bundesland string `json:"bundesland"` diff --git a/backend/internal/domain/discovery/service.go b/backend/internal/domain/discovery/service.go index 5c3bbfc..c8e9e06 100644 --- a/backend/internal/domain/discovery/service.go +++ b/backend/internal/domain/discovery/service.go @@ -205,7 +205,7 @@ func (s *Service) processBucketResponse(ctx context.Context, b Bucket, resp Pass } dm := DiscoveredMarket{ - BucketID: b.ID, + BucketID: &b.ID, MarktName: m.MarktName, Stadt: m.Stadt, Bundesland: m.Bundesland, diff --git a/backend/migrations/000017_discovered_markets_bucket_nullable.down.sql b/backend/migrations/000017_discovered_markets_bucket_nullable.down.sql new file mode 100644 index 0000000..cb3080d --- /dev/null +++ b/backend/migrations/000017_discovered_markets_bucket_nullable.down.sql @@ -0,0 +1,8 @@ +DO $$ +BEGIN + IF EXISTS (SELECT 1 FROM discovered_markets WHERE bucket_id IS NULL) THEN + RAISE EXCEPTION 'Cannot revert: % rows have NULL bucket_id (crawler-produced). Resolve manually before rolling back.', + (SELECT COUNT(*) FROM discovered_markets WHERE bucket_id IS NULL); + END IF; +END $$; +ALTER TABLE discovered_markets ALTER COLUMN bucket_id SET NOT NULL; diff --git a/backend/migrations/000017_discovered_markets_bucket_nullable.up.sql b/backend/migrations/000017_discovered_markets_bucket_nullable.up.sql new file mode 100644 index 0000000..214e236 --- /dev/null +++ b/backend/migrations/000017_discovered_markets_bucket_nullable.up.sql @@ -0,0 +1 @@ +ALTER TABLE discovered_markets ALTER COLUMN bucket_id DROP NOT NULL;