···137137 throw new Error("TAP client not initialized");
138138 }
139139140140- this.logger.log(`Registering repo with TAP: ${did}`);
141140 try {
142141 await this.tap.addRepos([did]);
143143- this.logger.log(`Successfully registered repo: ${did}`);
144142145143 // Check repo info to verify it's being tracked
146144 try {
···165163 throw new Error("TAP client not initialized");
166164 }
167165168168- this.logger.log(`Unregistering repo from TAP: ${did}`);
169166 await this.tap.removeRepos([did]);
170170- this.logger.debug(`Successfully unregistered repo: ${did}`);
171167 }
172168173169 /**
···181177 });
182178183179 if (users.length === 0) {
184184- this.logger.log("No existing users to register with TAP");
185180 return;
186181 }
187182188183 const dids = users.map((u) => u.did);
189189- this.logger.log(`Registering ${dids.length} existing users with TAP`);
190184191185 // Register each user individually to handle partial failures
192186 let successCount = 0;
···199193 // Continue with next user even if one fails
200194 }
201195 }
202202-203203- this.logger.log(
204204- `Successfully registered ${successCount}/${dids.length} repos with TAP`,
205205- );
206196 } catch (err) {
207197 this.logger.error("Failed to register existing users with TAP", err);
208198 }
209199 }
210200211201 private async handleRecordEvent(evt: RecordEvent) {
212212- this.logger.debug(
213213- `Received TAP event: ${evt.action} ${evt.collection} for ${evt.did} (live: ${evt.live})`,
214214- );
215215-216202 const uri = `at://${evt.did}/${evt.collection}/${evt.rkey}`;
217203218204 if (evt.collection === MOVIE_COLLECTION) {
···252238 return;
253239 }
254240255255- this.logger.log(
256256- `Indexing movie record (${evt.live ? "live" : "backfill"}): ${uri}`,
257257- );
258258-259241 const existingMovie = await this.moviesService.getMovieByTMDBId(
260242 movieRecord.movieId,
261243 );
···265247 movieRecord.movieId,
266248 );
267249 await this.moviesService.upsertMovie(movieData);
268268- this.logger.debug(`Created movie ${movieRecord.movieId} from TMDB`);
269250 } catch (err) {
270251 this.logger.error(
271252 `Failed to fetch movie ${movieRecord.movieId} from TMDB, skipping record`,
···292273 status: "watched",
293274 },
294275 });
295295-296296- this.logger.debug(
297297- `Indexed movie ${movieRecord.movieId} for user ${evt.did}`,
298298- );
299276 }
300277301278 if (evt.action === "delete") {
302302- this.logger.log(`Removing movie record: ${uri} (rkey: ${evt.rkey})`);
303303-304279 await this.prisma.trackedMovie.deleteMany({
305280 where: { rkey: evt.rkey },
306281 });
307307-308308- this.logger.debug(`Removed record with rkey ${evt.rkey}`);
309282 }
310283 }
311284···333306 return;
334307 }
335308336336- this.logger.log(
337337- `Indexing list record (${evt.live ? "live" : "backfill"}): ${uri}`,
338338- );
339339-340309 await this.listsService.indexListRecord(
341310 uri,
342311 evt.cid ?? "",
···347316 }
348317349318 if (evt.action === "delete") {
350350- this.logger.log(`Removing list record: ${uri} (rkey: ${evt.rkey})`);
351319 await this.listsService.deleteListRecord(evt.rkey);
352320 }
353321 }
···376344 return;
377345 }
378346379379- this.logger.log(
380380- `Indexing episode record (${evt.live ? "live" : "backfill"}): ${uri}`,
381381- );
382382-383347 const existingShow = await this.showsService.getShowByTMDBId(
384348 episodeRecord.showId,
385349 );
···422386 }
423387424388 if (evt.action === "delete") {
425425- this.logger.log(`Removing episode record: ${uri} (rkey: ${evt.rkey})`);
426389 await this.prisma.trackedEpisode.deleteMany({
427390 where: { rkey: evt.rkey },
428391 });
···453416 return;
454417 }
455418456456- this.logger.log(
457457- `Indexing list item record (${evt.live ? "live" : "backfill"}): ${uri}`,
458458- );
459459-460419 await this.listsService.indexListItemRecord(
461420 uri,
462421 evt.cid ?? "",
···467426 }
468427469428 if (evt.action === "delete") {
470470- this.logger.log(`Removing list item record: ${uri} (rkey: ${evt.rkey})`);
471429 await this.listsService.deleteListItemRecord(evt.rkey);
472430 }
473431 }
-4
backend/src/movies/movies.service.ts
···349349 validate: false, // PDS may not have xyz.opnshelf.movie lexicon
350350 });
351351352352- this.logger.log(
353353- `Created AT record for movie ${movieId}: ${response.data.uri}`,
354354- );
355355-356352 // Return the record info for optimistic updates
357353 return {
358354 uri: response.data.uri,