🐛 fix relationship

This commit is contained in:
Flam3rboy
2021-09-13 12:22:41 +02:00
parent 07ba78d391
commit dbbed7cbba
4 changed files with 94 additions and 65 deletions
+24 -6
View File
@@ -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(),
};
}
}
+10 -4
View File
@@ -10,7 +10,7 @@ import { VoiceState } from "../entities/VoiceState";
import { ApplicationCommand } from "../entities/Application";
import { Interaction } from "./Interaction";
import { ConnectedAccount } from "../entities/ConnectedAccount";
import { Relationship } from "../entities/Relationship";
import { Relationship, RelationshipType } from "../entities/Relationship";
import { Presence } from "./Presence";
export interface Event {
@@ -28,6 +28,12 @@ export interface InvalidatedEvent extends Event {
event: "INVALIDATED";
}
export interface PublicRelationship {
id: string;
user: PublicUser;
type: RelationshipType;
}
// ! END Custom Events that shouldn't get sent to the client but processed by the server
export interface ReadyEventData {
@@ -72,7 +78,7 @@ export interface ReadyEventData {
guild_join_requests?: any[]; // ? what is this? this is new
shard?: [number, number];
user_settings?: UserSettings;
relationships?: Relationship[]; // TODO
relationships?: PublicRelationship[]; // TODO
read_state: {
entries: any[]; // TODO
partial: boolean;
@@ -412,7 +418,7 @@ export interface MessageAckEvent extends Event {
export interface RelationshipAddEvent extends Event {
event: "RELATIONSHIP_ADD";
data: Relationship & {
data: PublicRelationship & {
should_notify?: boolean;
user: PublicUser;
};
@@ -420,7 +426,7 @@ export interface RelationshipAddEvent extends Event {
export interface RelationshipRemoveEvent extends Event {
event: "RELATIONSHIP_REMOVE";
data: Omit<Relationship, "nickname">;
data: Omit<PublicRelationship, "nickname">;
}
export type EventData =