summaryrefslogtreecommitdiff
path: root/packages/backend/src/models/LatestNote.ts
diff options
context:
space:
mode:
authorHazel K <acomputerdog@gmail.com>2024-09-29 21:27:38 -0400
committerHazel K <acomputerdog@gmail.com>2024-09-29 21:27:38 -0400
commitf8b55d357d0f4eaa33d3da000e15bfc4df8bf5de (patch)
tree7704d4f341543a58891a10ec3d685c2488a63036 /packages/backend/src/models/LatestNote.ts
parentmerge: Merge stable into develop (!636) (diff)
downloadsharkey-f8b55d357d0f4eaa33d3da000e15bfc4df8bf5de.tar.gz
sharkey-f8b55d357d0f4eaa33d3da000e15bfc4df8bf5de.tar.bz2
sharkey-f8b55d357d0f4eaa33d3da000e15bfc4df8bf5de.zip
add `latest_note` table
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;
+}