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(),
+ };
+ }
}
|