driver to user id
This commit is contained in:
@@ -12,6 +12,7 @@ export interface UserProps {
|
||||
iracingCustomerId?: string;
|
||||
primaryDriverId?: string;
|
||||
avatarUrl?: string;
|
||||
companyId?: string;
|
||||
}
|
||||
|
||||
export class User {
|
||||
@@ -22,6 +23,7 @@ export class User {
|
||||
private iracingCustomerId: string | undefined;
|
||||
private primaryDriverId: string | undefined;
|
||||
private avatarUrl: string | undefined;
|
||||
private companyId: string | undefined;
|
||||
|
||||
private constructor(props: UserProps) {
|
||||
this.validateDisplayName(props.displayName);
|
||||
@@ -33,6 +35,7 @@ export class User {
|
||||
this.iracingCustomerId = props.iracingCustomerId;
|
||||
this.primaryDriverId = props.primaryDriverId;
|
||||
this.avatarUrl = props.avatarUrl;
|
||||
this.companyId = props.companyId;
|
||||
}
|
||||
|
||||
private validateDisplayName(displayName: string): void {
|
||||
@@ -108,6 +111,7 @@ export class User {
|
||||
iracingCustomerId?: string;
|
||||
primaryDriverId?: string;
|
||||
avatarUrl?: string;
|
||||
companyId?: string;
|
||||
}): User {
|
||||
const email =
|
||||
props.email !== undefined
|
||||
@@ -128,6 +132,7 @@ export class User {
|
||||
...(props.iracingCustomerId !== undefined ? { iracingCustomerId: props.iracingCustomerId } : {}),
|
||||
...(props.primaryDriverId !== undefined ? { primaryDriverId: props.primaryDriverId } : {}),
|
||||
...(props.avatarUrl !== undefined ? { avatarUrl: props.avatarUrl } : {}),
|
||||
...(props.companyId !== undefined ? { companyId: props.companyId } : {}),
|
||||
});
|
||||
}
|
||||
|
||||
@@ -144,6 +149,7 @@ export class User {
|
||||
...(stored.primaryDriverId !== undefined
|
||||
? { primaryDriverId: stored.primaryDriverId }
|
||||
: {}),
|
||||
...(stored.companyId !== undefined ? { companyId: stored.companyId } : {}),
|
||||
};
|
||||
|
||||
return new User(userProps);
|
||||
@@ -177,6 +183,10 @@ export class User {
|
||||
return this.avatarUrl;
|
||||
}
|
||||
|
||||
public getCompanyId(): string | undefined {
|
||||
return this.companyId;
|
||||
}
|
||||
|
||||
/**
|
||||
* Update display name - NOT ALLOWED after initial creation
|
||||
* This method will always throw an error to enforce immutability
|
||||
@@ -193,4 +203,13 @@ export class User {
|
||||
// All users created through proper channels have immutable names
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set company ID (for linking user to company during sponsor signup)
|
||||
* This is only allowed during initial creation via rehydrate/fromStored
|
||||
* For runtime updates, a separate method would be needed
|
||||
*/
|
||||
public setCompanyId(companyId: string): void {
|
||||
this.companyId = companyId;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user