mirror of
https://github.com/spacebarchat/server.git
synced 2026-05-24 10:15:25 +00:00
🐛 fix relationship
This commit is contained in:
@@ -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,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 =
|
||||
|
||||
Reference in New Issue
Block a user