+10
-1
pkg/appview/jetstream/processor.go
+10
-1
pkg/appview/jetstream/processor.go
···
107
107
// Detect manifest type
108
108
isManifestList := len(manifestRecord.Manifests) > 0
109
109
110
+
// Extract hold DID from manifest (with fallback for legacy manifests)
111
+
// New manifests use holdDid field (DID format)
112
+
// Old manifests use holdEndpoint field (URL format) - convert to DID
113
+
holdDID := manifestRecord.HoldDID
114
+
if holdDID == "" && manifestRecord.HoldEndpoint != "" {
115
+
// Legacy manifest - convert URL to DID
116
+
holdDID = atproto.ResolveHoldDIDFromURL(manifestRecord.HoldEndpoint)
117
+
}
118
+
110
119
// Prepare manifest for insertion (WITHOUT annotation fields)
111
120
manifest := &db.Manifest{
112
121
DID: did,
···
114
123
Digest: manifestRecord.Digest,
115
124
MediaType: manifestRecord.MediaType,
116
125
SchemaVersion: manifestRecord.SchemaVersion,
117
-
HoldEndpoint: manifestRecord.HoldEndpoint,
126
+
HoldEndpoint: holdDID,
118
127
CreatedAt: manifestRecord.CreatedAt,
119
128
// Annotations removed - stored separately in repository_annotations table
120
129
}