A social knowledge tool for researchers built on ATProto
at development 1.2 kB view raw
1import { ok, Result, err } from 'src/shared/core/Result'; 2import { Guard } from 'src/shared/core/Guard'; 3import { UniqueEntityID } from 'src/shared/domain/UniqueEntityID'; 4import { ValueObject } from 'src/shared/domain/ValueObject'; 5 6interface CollectionIdProps { 7 value: UniqueEntityID; 8} 9 10export class CollectionId extends ValueObject<CollectionIdProps> { 11 getStringValue(): string { 12 return this.props.value.toString(); 13 } 14 15 getValue(): UniqueEntityID { 16 return this.props.value; 17 } 18 19 private constructor(value: UniqueEntityID) { 20 super({ value }); 21 } 22 23 public static create(id: UniqueEntityID): Result<CollectionId> { 24 const guardResult = Guard.againstNullOrUndefined(id, 'id'); 25 if (guardResult.isErr()) { 26 return err(new Error(guardResult.error)); 27 } 28 return ok(new CollectionId(id)); 29 } 30 31 public static createFromString(value: string): Result<CollectionId> { 32 const guardResult = Guard.againstNullOrUndefined(value, 'value'); 33 if (guardResult.isErr()) { 34 return err(new Error(guardResult.error)); 35 } 36 const uniqueEntityID = new UniqueEntityID(value); 37 return ok(new CollectionId(uniqueEntityID)); 38 } 39}