import { DomainConflictError } from '../../../common/errors/domain-conflict.error';
type MembershipInput = Record<string, unknown>;
function assertObject(input: unknown, code: string): asserts input is MembershipInput {
if (!input || typeof input !== 'object' || Array.isArray(input)) throw new DomainConflictError(code);
}
function assertText(value: unknown, max: number, code: string): asserts value is string {
if (typeof value !== 'string' || value.trim().length === 0 || value.length > max) throw new DomainConflictError(code);
}
function assertOptionalText(value: unknown, max: number, code: string): void {
if (value !== undefined && value !== null) assertText(value, max, code);
}
export function assertMembershipInviteInput(input: unknown): asserts input is MembershipInput {
const code = 'membership.input_invalid';
assertObject(input, code);
assertText(input.organizationId, 200, code);
assertText(input.userAccountId, 200, code);
assertOptionalText(input.employeeId, 200, code);
assertOptionalText(input.actorUserId, 200, code);
assertOptionalText(input.correlationId, 200, code);
}
export function assertMembershipReferenceInput(organizationId: unknown, membershipId: unknown): void {
const code = 'membership.input_invalid';
assertText(organizationId, 200, code);
assertText(membershipId, 200, code);
}
