diff --git a/src/auth/auth-token.entity.ts b/src/auth/auth-token.entity.ts index 22f5a965f..79cb8b20f 100644 --- a/src/auth/auth-token.entity.ts +++ b/src/auth/auth-token.entity.ts @@ -21,7 +21,9 @@ export class AuthToken { @Column({ unique: true }) keyId: string; - @ManyToOne((_) => User, (user) => user.authTokens) + @ManyToOne((_) => User, (user) => user.authTokens, { + onDelete: 'CASCADE', // This deletes the AuthToken, when the associated User is deleted + }) user: User; @Column() diff --git a/src/groups/group.entity.ts b/src/groups/group.entity.ts index f3cdc6ad4..41f78e837 100644 --- a/src/groups/group.entity.ts +++ b/src/groups/group.entity.ts @@ -36,7 +36,6 @@ export class Group { @ManyToMany((_) => User, (user) => user.groups, { eager: true, - cascade: true, }) @JoinTable() members: User[]; diff --git a/src/media/media-upload.entity.ts b/src/media/media-upload.entity.ts index c9f253278..d25094d3b 100644 --- a/src/media/media-upload.entity.ts +++ b/src/media/media-upload.entity.ts @@ -23,10 +23,14 @@ export class MediaUpload { @PrimaryColumn() id: string; - @ManyToOne((_) => Note, { nullable: false }) + @ManyToOne((_) => Note, (note) => note.mediaUploads, { + nullable: false, + }) note: Note; - @ManyToOne((_) => User, { nullable: false }) + @ManyToOne((_) => User, (user) => user.mediaUploads, { + nullable: false, + }) user: User; @Column({ diff --git a/src/notes/note.entity.ts b/src/notes/note.entity.ts index 538af568b..5e4cf0ef9 100644 --- a/src/notes/note.entity.ts +++ b/src/notes/note.entity.ts @@ -21,6 +21,7 @@ import { User } from '../users/user.entity'; import { AuthorColor } from './author-color.entity'; import { Tag } from './tag.entity'; import { HistoryEntry } from '../history/history-entry.entity'; +import { MediaUpload } from '../media/media-upload.entity'; @Entity() export class Note { @@ -53,7 +54,9 @@ export class Note { default: 0, }) viewCount: number; - @ManyToOne((_) => User, (user) => user.ownedNotes, { onDelete: 'CASCADE' }) + @ManyToOne((_) => User, (user) => user.ownedNotes, { + onDelete: 'CASCADE', // This deletes the Note, when the associated User is deleted + }) owner: User; @OneToMany((_) => Revision, (revision) => revision.note, { cascade: true }) revisions: Promise; @@ -61,6 +64,8 @@ export class Note { authorColors: AuthorColor[]; @OneToMany((_) => HistoryEntry, (historyEntry) => historyEntry.user) historyEntries: HistoryEntry[]; + @OneToMany((_) => MediaUpload, (mediaUpload) => mediaUpload.note) + mediaUploads: MediaUpload[]; @Column({ nullable: true, diff --git a/src/users/identity.entity.ts b/src/users/identity.entity.ts index f8999bc82..462399d42 100644 --- a/src/users/identity.entity.ts +++ b/src/users/identity.entity.ts @@ -19,7 +19,9 @@ export class Identity { @PrimaryGeneratedColumn() id: number; - @ManyToOne((_) => User, (user) => user.identities) + @ManyToOne((_) => User, (user) => user.identities, { + onDelete: 'CASCADE', // This deletes the Identity, when the associated User is deleted + }) user: User; @Column() diff --git a/src/users/user.entity.ts b/src/users/user.entity.ts index 33e26114d..c04350821 100644 --- a/src/users/user.entity.ts +++ b/src/users/user.entity.ts @@ -17,6 +17,7 @@ import { AuthToken } from '../auth/auth-token.entity'; import { Identity } from './identity.entity'; import { Group } from '../groups/group.entity'; import { HistoryEntry } from '../history/history-entry.entity'; +import { MediaUpload } from '../media/media-upload.entity'; @Entity() export class User { @@ -62,6 +63,9 @@ export class User { @OneToMany((_) => HistoryEntry, (historyEntry) => historyEntry.user) historyEntries: HistoryEntry[]; + @OneToMany((_) => MediaUpload, (mediaUpload) => mediaUpload.user) + mediaUploads: MediaUpload[]; + // eslint-disable-next-line @typescript-eslint/no-empty-function private constructor() {}