summaryrefslogtreecommitdiff
path: root/packages/backend/src/models/LatestNote.ts
diff options
context:
space:
mode:
Diffstat (limited to 'packages/backend/src/models/LatestNote.ts')
-rw-r--r--packages/backend/src/models/LatestNote.ts37
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;
+}