36 lines
862 B
TypeScript
36 lines
862 B
TypeScript
import type { ValueObject } from '@core/shared/domain';
|
|
|
|
export interface AnalyticsSessionIdProps {
|
|
value: string;
|
|
}
|
|
|
|
/**
|
|
* Value Object: AnalyticsSessionId
|
|
*
|
|
* Represents an analytics session identifier within the analytics bounded context.
|
|
*/
|
|
export class AnalyticsSessionId implements ValueObject<AnalyticsSessionIdProps> {
|
|
public readonly props: AnalyticsSessionIdProps;
|
|
|
|
private constructor(value: string) {
|
|
this.props = { value };
|
|
}
|
|
|
|
static create(raw: string): AnalyticsSessionId {
|
|
const value = raw.trim();
|
|
|
|
if (!value) {
|
|
throw new Error('AnalyticsSessionId must be a non-empty string');
|
|
}
|
|
|
|
return new AnalyticsSessionId(value);
|
|
}
|
|
|
|
get value(): string {
|
|
return this.props.value;
|
|
}
|
|
|
|
equals(other: IValueObject<AnalyticsSessionIdProps>): boolean {
|
|
return this.props.value === other.props.value;
|
|
}
|
|
} |