From 1444eaf26787ed1a1228e201e85063dec55845eb Mon Sep 17 00:00:00 2001 From: Wesley Finck Date: Fri, 10 Oct 2025 15:51:53 -0700 Subject: [PATCH] refactor: update publishCardToLibrary to use parentCardPublishedRecordId Co-authored-by: aider (anthropic/claude-sonnet-4-20250514) --- .../__tests__/ATProtoCardPublisher.integration.test.ts | 2 +- src/modules/atproto/infrastructure/mappers/CardMapper.ts | 7 ++++--- .../infrastructure/publishers/ATProtoCardPublisher.ts | 4 ++-- src/modules/cards/application/ports/ICardPublisher.ts | 2 +- src/modules/cards/domain/services/CardLibraryService.ts | 8 +++++--- src/modules/cards/tests/utils/FakeCardPublisher.ts | 2 +- 6 files changed, 14 insertions(+), 11 deletions(-) diff --git a/src/modules/atproto/infrastructure/__tests__/ATProtoCardPublisher.integration.test.ts b/src/modules/atproto/infrastructure/__tests__/ATProtoCardPublisher.integration.test.ts index 63a28164..c540e809 100644 --- a/src/modules/atproto/infrastructure/__tests__/ATProtoCardPublisher.integration.test.ts +++ b/src/modules/atproto/infrastructure/__tests__/ATProtoCardPublisher.integration.test.ts @@ -318,7 +318,7 @@ describe('ATProtoCardPublisher', () => { const notePublishResult = await publisher.publishCardToLibrary( noteCard, curatorId, - parentUrlCard, + parentUrlCard.publishedRecordId, ); expect(notePublishResult.isOk()).toBe(true); diff --git a/src/modules/atproto/infrastructure/mappers/CardMapper.ts b/src/modules/atproto/infrastructure/mappers/CardMapper.ts index 33836006..d73a8937 100644 --- a/src/modules/atproto/infrastructure/mappers/CardMapper.ts +++ b/src/modules/atproto/infrastructure/mappers/CardMapper.ts @@ -11,6 +11,7 @@ import { StrongRef } from '../../domain'; import { UrlMetadata as UrlMetadataVO } from 'src/modules/cards/domain/value-objects/UrlMetadata'; import { CuratorId } from 'src/modules/cards/domain/value-objects/CuratorId'; import { EnvironmentConfigService } from 'src/shared/infrastructure/config/EnvironmentConfigService'; +import { PublishedRecordId } from 'src/modules/cards/domain/value-objects/PublishedRecordId'; type CardRecordDTO = Record; @@ -20,7 +21,7 @@ export class CardMapper { static toCreateRecordDTO( card: Card, curatorId: CuratorId, - parentCard?: Card, + parentCardPublishedRecordId?: PublishedRecordId, ): CardRecordDTO { const record: CardRecordDTO = { $type: this.cardCollection as any, @@ -42,8 +43,8 @@ export class CardMapper { }; } - if (card.parentCardId && parentCard && parentCard.publishedRecordId) { - const strongRef = new StrongRef(parentCard.publishedRecordId.getValue()); + if (card.parentCardId && parentCardPublishedRecordId) { + const strongRef = new StrongRef(parentCardPublishedRecordId.getValue()); record.parentCard = { uri: strongRef.getValue().uri, cid: strongRef.getValue().cid, diff --git a/src/modules/atproto/infrastructure/publishers/ATProtoCardPublisher.ts b/src/modules/atproto/infrastructure/publishers/ATProtoCardPublisher.ts index 8e5a681d..8f4fe0c6 100644 --- a/src/modules/atproto/infrastructure/publishers/ATProtoCardPublisher.ts +++ b/src/modules/atproto/infrastructure/publishers/ATProtoCardPublisher.ts @@ -20,10 +20,10 @@ export class ATProtoCardPublisher implements ICardPublisher { async publishCardToLibrary( card: Card, curatorId: CuratorId, - parentCard?: Card, + parentCardPublishedRecordId?: PublishedRecordId, ): Promise> { try { - let record = CardMapper.toCreateRecordDTO(card, curatorId, parentCard); + let record = CardMapper.toCreateRecordDTO(card, curatorId, parentCardPublishedRecordId); record.$type = this.cardCollection as any; const curatorDidResult = DID.create(curatorId.value); diff --git a/src/modules/cards/application/ports/ICardPublisher.ts b/src/modules/cards/application/ports/ICardPublisher.ts index ee90cd29..c9e6b66b 100644 --- a/src/modules/cards/application/ports/ICardPublisher.ts +++ b/src/modules/cards/application/ports/ICardPublisher.ts @@ -8,7 +8,7 @@ export interface ICardPublisher { publishCardToLibrary( card: Card, curatorId: CuratorId, - parentCard?: Card, + parentCardPublishedRecordId?: PublishedRecordId, ): Promise>; unpublishCardFromLibrary( diff --git a/src/modules/cards/domain/services/CardLibraryService.ts b/src/modules/cards/domain/services/CardLibraryService.ts index ff9f33cf..91c6a83d 100644 --- a/src/modules/cards/domain/services/CardLibraryService.ts +++ b/src/modules/cards/domain/services/CardLibraryService.ts @@ -7,6 +7,7 @@ import { ICollectionRepository } from '../ICollectionRepository'; import { AppError } from '../../../../shared/core/AppError'; import { DomainService } from '../../../../shared/domain/DomainService'; import { CardCollectionService } from './CardCollectionService'; +import { PublishedRecordId } from '../value-objects/PublishedRecordId'; export class CardLibraryValidationError extends Error { constructor(message: string) { @@ -45,7 +46,8 @@ export class CardLibraryService implements DomainService { ), ); } - let parentCard: Card | undefined = undefined; + let parentCardPublishedRecordId: PublishedRecordId | undefined = + undefined; if (card.parentCardId) { // Ensure parent card is in the curator's library @@ -64,14 +66,14 @@ export class CardLibraryService implements DomainService { if (!parentCardValue) { return err(new CardLibraryValidationError(`Parent card not found`)); } - parentCard = parentCardValue; + parentCardPublishedRecordId = parentCardValue.publishedRecordId; } // Publish card to library const publishResult = await this.cardPublisher.publishCardToLibrary( card, curatorId, - parentCard, + parentCardPublishedRecordId, ); if (publishResult.isErr()) { return err( diff --git a/src/modules/cards/tests/utils/FakeCardPublisher.ts b/src/modules/cards/tests/utils/FakeCardPublisher.ts index fcb6be68..25024c8f 100644 --- a/src/modules/cards/tests/utils/FakeCardPublisher.ts +++ b/src/modules/cards/tests/utils/FakeCardPublisher.ts @@ -19,7 +19,7 @@ export class FakeCardPublisher implements ICardPublisher { async publishCardToLibrary( card: Card, curatorId: CuratorId, - parentCard?: Card, + parentCardPublishedRecordId?: PublishedRecordId, ): Promise> { if (this.shouldFail) { return err( -- 2.51.2