diff options
| author | Mar0xy <marie@kaifa.ch> | 2023-09-22 21:05:42 +0200 |
|---|---|---|
| committer | Mar0xy <marie@kaifa.ch> | 2023-09-22 21:05:42 +0200 |
| commit | feec3c302b893e28c4862fb44a7ad4455d30cf85 (patch) | |
| tree | 860d2a153171b8a65aa1d00cd856370e1aee1451 /packages/backend/src/models | |
| parent | merge: develop branch (diff) | |
| download | sharkey-feec3c302b893e28c4862fb44a7ad4455d30cf85.tar.gz sharkey-feec3c302b893e28c4862fb44a7ad4455d30cf85.tar.bz2 sharkey-feec3c302b893e28c4862fb44a7ad4455d30cf85.zip | |
upd: add backend for post editing
Diffstat (limited to 'packages/backend/src/models')
| -rw-r--r-- | packages/backend/src/models/Note.ts | 6 | ||||
| -rw-r--r-- | packages/backend/src/models/NoteEdit.ts | 46 | ||||
| -rw-r--r-- | packages/backend/src/models/RepositoryModule.ts | 10 | ||||
| -rw-r--r-- | packages/backend/src/models/_.ts | 3 | ||||
| -rw-r--r-- | packages/backend/src/models/json-schema/note-edit.ts | 49 | ||||
| -rw-r--r-- | packages/backend/src/models/json-schema/note.ts | 5 |
6 files changed, 118 insertions, 1 deletions
diff --git a/packages/backend/src/models/Note.ts b/packages/backend/src/models/Note.ts index ed86d4549e..6855f83b61 100644 --- a/packages/backend/src/models/Note.ts +++ b/packages/backend/src/models/Note.ts @@ -239,6 +239,12 @@ export class MiNote { comment: '[Denormalized]', }) public renoteUserHost: string | null; + + @Index() + @Column('timestamp with time zone', { + comment: 'The update time of the Note.', + }) + public updatedAt: Date | null; //#endregion constructor(data: Partial<MiNote>) { diff --git a/packages/backend/src/models/NoteEdit.ts b/packages/backend/src/models/NoteEdit.ts new file mode 100644 index 0000000000..547b135e56 --- /dev/null +++ b/packages/backend/src/models/NoteEdit.ts @@ -0,0 +1,46 @@ +import { Entity, JoinColumn, Column, ManyToOne, PrimaryColumn, Index } from "typeorm"; +import { id } from './util/id.js'; +import { MiNote } from './Note.js'; +import type { MiDriveFile } from './DriveFile.js'; + +@Entity() +export class NoteEdit { + @PrimaryColumn(id()) + public id: string; + + @Index() + @Column({ + ...id(), + comment: "The ID of note.", + }) + public noteId: MiNote["id"]; + + @ManyToOne((type) => MiNote, { + onDelete: "CASCADE", + }) + @JoinColumn() + public note: MiNote | null; + + @Column("text", { + nullable: true, + }) + public text: string | null; + + @Column("varchar", { + length: 512, + nullable: true, + }) + public cw: string | null; + + @Column({ + ...id(), + array: true, + default: "{}", + }) + public fileIds: MiDriveFile["id"][]; + + @Column("timestamp with time zone", { + comment: "The updated date of the Note.", + }) + public updatedAt: Date; +} diff --git a/packages/backend/src/models/RepositoryModule.ts b/packages/backend/src/models/RepositoryModule.ts index 766e7ce21c..7e2bee8c44 100644 --- a/packages/backend/src/models/RepositoryModule.ts +++ b/packages/backend/src/models/RepositoryModule.ts @@ -5,7 +5,7 @@ import { Module } from '@nestjs/common'; import { DI } from '@/di-symbols.js'; -import { MiAbuseUserReport, MiAccessToken, MiAd, MiAnnouncement, MiAnnouncementRead, MiAntenna, MiApp, MiAuthSession, MiBlocking, MiChannel, MiChannelFavorite, MiChannelFollowing, MiClip, MiClipFavorite, MiClipNote, MiDriveFile, MiDriveFolder, MiEmoji, MiFlash, MiFlashLike, MiFollowRequest, MiFollowing, MiGalleryLike, MiGalleryPost, MiHashtag, MiInstance, MiMeta, MiModerationLog, MiMutedNote, MiMuting, MiNote, MiNoteFavorite, MiNoteReaction, MiNoteThreadMuting, MiNoteUnread, MiPage, MiPageLike, MiPasswordResetRequest, MiPoll, MiPollVote, MiPromoNote, MiPromoRead, MiRegistrationTicket, MiRegistryItem, MiRelay, MiRenoteMuting, MiRetentionAggregation, MiRole, MiRoleAssignment, MiSignin, MiSwSubscription, MiUsedUsername, MiUser, MiUserIp, MiUserKeypair, MiUserList, MiUserListFavorite, MiUserListJoining, MiUserMemo, MiUserNotePining, MiUserPending, MiUserProfile, MiUserPublickey, MiUserSecurityKey, MiWebhook } from './_.js'; +import { MiAbuseUserReport, MiAccessToken, MiAd, MiAnnouncement, MiAnnouncementRead, MiAntenna, MiApp, MiAuthSession, MiBlocking, MiChannel, MiChannelFavorite, MiChannelFollowing, MiClip, MiClipFavorite, MiClipNote, MiDriveFile, MiDriveFolder, MiEmoji, MiFlash, MiFlashLike, MiFollowRequest, MiFollowing, MiGalleryLike, MiGalleryPost, MiHashtag, MiInstance, MiMeta, MiModerationLog, MiMutedNote, MiMuting, MiNote, MiNoteFavorite, MiNoteReaction, MiNoteThreadMuting, MiNoteUnread, MiPage, MiPageLike, MiPasswordResetRequest, MiPoll, MiPollVote, MiPromoNote, MiPromoRead, MiRegistrationTicket, MiRegistryItem, MiRelay, MiRenoteMuting, MiRetentionAggregation, MiRole, MiRoleAssignment, MiSignin, MiSwSubscription, MiUsedUsername, MiUser, MiUserIp, MiUserKeypair, MiUserList, MiUserListFavorite, MiUserListJoining, MiUserMemo, MiUserNotePining, MiUserPending, MiUserProfile, MiUserPublickey, MiUserSecurityKey, MiWebhook, NoteEdit } from './_.js'; import type { DataSource } from 'typeorm'; import type { Provider } from '@nestjs/common'; @@ -399,6 +399,12 @@ const $userMemosRepository: Provider = { inject: [DI.db], }; +const $noteEditRepository: Provider = { + provide: DI.noteEditRepository, + useFactory: (db: DataSource) => db.getRepository(NoteEdit), + inject: [DI.db], +}; + @Module({ imports: [ ], @@ -468,6 +474,7 @@ const $userMemosRepository: Provider = { $flashsRepository, $flashLikesRepository, $userMemosRepository, + $noteEditRepository, ], exports: [ $usersRepository, @@ -535,6 +542,7 @@ const $userMemosRepository: Provider = { $flashsRepository, $flashLikesRepository, $userMemosRepository, + $noteEditRepository, ], }) export class RepositoryModule {} diff --git a/packages/backend/src/models/_.ts b/packages/backend/src/models/_.ts index 6be7bd0df6..e6eafa4184 100644 --- a/packages/backend/src/models/_.ts +++ b/packages/backend/src/models/_.ts @@ -68,6 +68,7 @@ import { MiRoleAssignment } from '@/models/RoleAssignment.js'; import { MiFlash } from '@/models/Flash.js'; import { MiFlashLike } from '@/models/FlashLike.js'; import { MiUserListFavorite } from '@/models/UserListFavorite.js'; +import { NoteEdit } from '@/models/NoteEdit.js'; import type { Repository } from 'typeorm'; export { @@ -136,6 +137,7 @@ export { MiFlash, MiFlashLike, MiUserMemo, + NoteEdit, }; export type AbuseUserReportsRepository = Repository<MiAbuseUserReport>; @@ -203,3 +205,4 @@ export type RoleAssignmentsRepository = Repository<MiRoleAssignment>; export type FlashsRepository = Repository<MiFlash>; export type FlashLikesRepository = Repository<MiFlashLike>; export type UserMemoRepository = Repository<MiUserMemo>; +export type NoteEditRepository = Repository<NoteEdit>;
\ No newline at end of file diff --git a/packages/backend/src/models/json-schema/note-edit.ts b/packages/backend/src/models/json-schema/note-edit.ts new file mode 100644 index 0000000000..e877f3f946 --- /dev/null +++ b/packages/backend/src/models/json-schema/note-edit.ts @@ -0,0 +1,49 @@ +export const packedNoteEdit = { + type: "object", + properties: { + id: { + type: "string", + optional: false, + nullable: false, + format: "id", + example: "xxxxxxxxxx", + }, + updatedAt: { + type: "string", + optional: false, + nullable: false, + format: "date-time", + }, + note: { + type: "object", + optional: false, + nullable: false, + ref: "Note", + }, + noteId: { + type: "string", + optional: false, + nullable: false, + format: "id", + }, + text: { + type: "string", + optional: true, + nullable: true, + }, + cw: { + type: "string", + optional: true, + nullable: true, + }, + fileIds: { + type: "array", + optional: true, + nullable: true, + items: { + type: "string", + format: "id", + }, + }, + }, +} as const; diff --git a/packages/backend/src/models/json-schema/note.ts b/packages/backend/src/models/json-schema/note.ts index eb744aa109..f3c436d0b3 100644 --- a/packages/backend/src/models/json-schema/note.ts +++ b/packages/backend/src/models/json-schema/note.ts @@ -22,6 +22,11 @@ export const packedNoteSchema = { optional: true, nullable: true, format: 'date-time', }, + updatedAt: { + type: 'string', + optional: true, nullable: true, + format: 'date-time', + }, text: { type: 'string', optional: false, nullable: true, |