summaryrefslogtreecommitdiff
path: root/packages/backend/src/models/NoteSchedule.ts
diff options
context:
space:
mode:
authordakkar <dakkar@thenautilus.net>2024-12-12 13:04:51 +0000
committerdakkar <dakkar@thenautilus.net>2024-12-12 13:04:51 +0000
commit6d4ae935921ef1dcc5c908f216f6e8affc6e60c3 (patch)
tree6c1f7724b63efa8f48f1c9e21f2789f9d9c000b2 /packages/backend/src/models/NoteSchedule.ts
parentfix(backend): アドレス入力で直接ユーザのプロフィールペー... (diff)
parentmerge: Schedule Notes (!804) (diff)
downloadsharkey-6d4ae935921ef1dcc5c908f216f6e8affc6e60c3.tar.gz
sharkey-6d4ae935921ef1dcc5c908f216f6e8affc6e60c3.tar.bz2
sharkey-6d4ae935921ef1dcc5c908f216f6e8affc6e60c3.zip
Merge branch 'develop' into feature/2024.10
Diffstat (limited to 'packages/backend/src/models/NoteSchedule.ts')
-rw-r--r--packages/backend/src/models/NoteSchedule.ts58
1 files changed, 58 insertions, 0 deletions
diff --git a/packages/backend/src/models/NoteSchedule.ts b/packages/backend/src/models/NoteSchedule.ts
new file mode 100644
index 0000000000..dde0af6ad7
--- /dev/null
+++ b/packages/backend/src/models/NoteSchedule.ts
@@ -0,0 +1,58 @@
+/*
+ * SPDX-FileCopyrightText: syuilo and other misskey contributors
+ * SPDX-License-Identifier: AGPL-3.0-only
+ */
+
+import { Entity, Index, Column, PrimaryColumn } from 'typeorm';
+import { MiNote } from '@/models/Note.js';
+import { id } from './util/id.js';
+import { MiUser } from './User.js';
+import { MiChannel } from './Channel.js';
+import type { MiDriveFile } from './DriveFile.js';
+
+type MinimumUser = {
+ id: MiUser['id'];
+ host: MiUser['host'];
+ username: MiUser['username'];
+ uri: MiUser['uri'];
+};
+
+export type MiScheduleNoteType={
+ visibility: 'public' | 'home' | 'followers' | 'specified';
+ visibleUsers: MinimumUser[];
+ channel?: MiChannel['id'];
+ poll: {
+ multiple: boolean;
+ choices: string[];
+ /** Date.toISOString() */
+ expiresAt: string | null
+ } | undefined;
+ renote?: MiNote['id'];
+ localOnly: boolean;
+ cw?: string | null;
+ reactionAcceptance: 'likeOnly' | 'likeOnlyForRemote' | 'nonSensitiveOnly' | 'nonSensitiveOnlyForLocalLikeOnlyForRemote' | null;
+ files: MiDriveFile['id'][];
+ text?: string | null;
+ reply?: MiNote['id'];
+ apMentions?: MinimumUser[] | null;
+ apHashtags?: string[] | null;
+ apEmojis?: string[] | null;
+}
+
+@Entity('note_schedule')
+export class MiNoteSchedule {
+ @PrimaryColumn(id())
+ public id: string;
+
+ @Column('jsonb')
+ public note: MiScheduleNoteType;
+
+ @Index()
+ @Column('varchar', {
+ length: 260,
+ })
+ public userId: MiUser['id'];
+
+ @Column('timestamp with time zone')
+ public scheduledAt: Date;
+}