diff options
| author | Marie <github@yuugi.dev> | 2024-12-12 12:50:11 +0000 |
|---|---|---|
| committer | Marie <github@yuugi.dev> | 2024-12-12 12:50:11 +0000 |
| commit | 8eb9c20df73960baf78834da65349fbfb7014f23 (patch) | |
| tree | ab8326ede2f2a475069ad7b820c6689401798c79 /packages/backend/src/models/NoteSchedule.ts | |
| parent | merge: fix icons in dev mode (!813) (diff) | |
| parent | Apply suggestions (diff) | |
| download | sharkey-8eb9c20df73960baf78834da65349fbfb7014f23.tar.gz sharkey-8eb9c20df73960baf78834da65349fbfb7014f23.tar.bz2 sharkey-8eb9c20df73960baf78834da65349fbfb7014f23.zip | |
merge: Schedule Notes (!804)
View MR for information: https://activitypub.software/TransFem-org/Sharkey/-/merge_requests/804
Approved-by: dakkar <dakkar@thenautilus.net>
Approved-by: Hazelnoot <acomputerdog@gmail.com>
Diffstat (limited to 'packages/backend/src/models/NoteSchedule.ts')
| -rw-r--r-- | packages/backend/src/models/NoteSchedule.ts | 58 |
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; +} |