This repository has no description
0

Configure Feed

Select the types of activity you want to include in your feed.

semble / src / modules / cards / domain / ICollectionRepository.ts
1.7 kB 49 lines
1import { Result } from '../../../shared/core/Result'; 2import { Collection, CollectionAccessType } from './Collection'; 3import { CollectionId } from './value-objects/CollectionId'; 4import { CardId } from './value-objects/CardId'; 5import { CuratorId } from './value-objects/CuratorId'; 6import { PublishedRecordId } from './value-objects/PublishedRecordId'; 7 8export interface ICollectionRepository { 9 findById(id: CollectionId): Promise<Result<Collection | null>>; 10 findByIds(ids: CollectionId[]): Promise<Result<Collection[]>>; 11 findByCuratorId(curatorId: CuratorId): Promise<Result<Collection[]>>; 12 findByCardId(cardId: CardId): Promise<Result<Collection[]>>; 13 findByCuratorIdContainingCard( 14 authorId: CuratorId, 15 cardId: CardId, 16 ): Promise<Result<Collection[]>>; 17 findContainingCardAddedBy( 18 cardId: CardId, 19 addedBy: CuratorId, 20 ): Promise<Result<Collection[]>>; 21 22 // Create a new collection (initial insert only) 23 create(collection: Collection): Promise<Result<void>>; 24 25 // Update an existing collection using pending commands 26 save(collection: Collection): Promise<Result<void>>; 27 28 delete(collectionId: CollectionId): Promise<Result<void>>; 29 30 // Lightweight update for collection metadata only 31 updateMetadata( 32 collectionId: CollectionId, 33 updates: { 34 name?: string; 35 description?: string; 36 accessType?: CollectionAccessType; 37 publishedRecordId?: PublishedRecordId; 38 }, 39 ): Promise<Result<void>>; 40 41 // Batch operation for efficient multi-collection updates 42 addCardToMultipleCollections( 43 cardId: CardId, 44 collectionIds: CollectionId[], 45 curatorId: CuratorId, 46 viaCardId?: CardId, 47 publishedRecordIds?: Map<string, string>, 48 ): Promise<Result<void>>; 49}