diff options
Diffstat (limited to 'packages/backend/src/models/LatestNote.ts')
| -rw-r--r-- | packages/backend/src/models/LatestNote.ts | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/packages/backend/src/models/LatestNote.ts b/packages/backend/src/models/LatestNote.ts new file mode 100644 index 0000000000..9d56b82620 --- /dev/null +++ b/packages/backend/src/models/LatestNote.ts @@ -0,0 +1,37 @@ +import { PrimaryColumn, Entity, JoinColumn, Column, ManyToOne } from 'typeorm'; +import { MiUser } from '@/models/User.js'; +import { MiNote } from '@/models/Note.js'; + +/** + * Maps a user to the most recent post by that user. + * Public, home-only, and followers-only posts are included. + * DMs are not counted. + */ +@Entity('latest_note') +export class LatestNote { + @PrimaryColumn({ + name: 'user_id', + type: 'varchar' as const, + length: 32, + }) + public userId: string; + + @ManyToOne(() => MiUser, { + onDelete: 'CASCADE', + }) + @JoinColumn() + public user: MiUser | null; + + @Column({ + name: 'note_id', + type: 'varchar' as const, + length: 32, + }) + public noteId: string; + + @ManyToOne(() => MiNote, { + onDelete: 'CASCADE', + }) + @JoinColumn() + public note: MiNote | null; +} |