summary refs log tree commit diff
path: root/util/src/entities/Relationship.ts
diff options
context:
space:
mode:
Diffstat (limited to 'util/src/entities/Relationship.ts')
-rw-r--r--util/src/entities/Relationship.ts30
1 files changed, 24 insertions, 6 deletions
diff --git a/util/src/entities/Relationship.ts b/util/src/entities/Relationship.ts

index 5935f5b6..61b3ac82 100644 --- a/util/src/entities/Relationship.ts +++ b/util/src/entities/Relationship.ts
@@ -1,4 +1,4 @@ -import { Column, Entity, JoinColumn, ManyToOne, RelationId } from "typeorm"; +import { Column, Entity, Index, JoinColumn, ManyToOne, RelationId } from "typeorm"; import { BaseClass } from "./BaseClass"; import { User } from "./User"; @@ -10,18 +10,36 @@ export enum RelationshipType { } @Entity("relationships") +@Index(["from_id", "to_id"], { unique: true }) export class Relationship extends BaseClass { - @Column({ nullable: true }) - @RelationId((relationship: Relationship) => relationship.user) - user_id: string; + @Column({}) + @RelationId((relationship: Relationship) => relationship.from) + from_id: string; - @JoinColumn({ name: "user_id" }) + @JoinColumn({ name: "from_id" }) @ManyToOne(() => User) - user: User; + from: User; + + @Column({}) + @RelationId((relationship: Relationship) => relationship.to) + to_id: string; + + @JoinColumn({ name: "to_id" }) + @ManyToOne(() => User) + to: User; @Column({ nullable: true }) nickname?: string; @Column({ type: "simple-enum", enum: RelationshipType }) type: RelationshipType; + + toPublicRelationship() { + return { + id: this.to?.id || this.to_id, + type: this.type, + nickname: this.nickname, + user: this.to?.toPublicUser(), + }; + } }