summaryrefslogtreecommitdiff
path: root/packages/backend/src/models
diff options
context:
space:
mode:
authorMar0xy <marie@kaifa.ch>2023-09-22 21:05:42 +0200
committerMar0xy <marie@kaifa.ch>2023-09-22 21:05:42 +0200
commitfeec3c302b893e28c4862fb44a7ad4455d30cf85 (patch)
tree860d2a153171b8a65aa1d00cd856370e1aee1451 /packages/backend/src/models
parentmerge: develop branch (diff)
downloadsharkey-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.ts6
-rw-r--r--packages/backend/src/models/NoteEdit.ts46
-rw-r--r--packages/backend/src/models/RepositoryModule.ts10
-rw-r--r--packages/backend/src/models/_.ts3
-rw-r--r--packages/backend/src/models/json-schema/note-edit.ts49
-rw-r--r--packages/backend/src/models/json-schema/note.ts5
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,