summaryrefslogtreecommitdiff
path: root/src/models
diff options
context:
space:
mode:
authorsyuilo <Syuilotan@yahoo.co.jp>2020-07-27 13:34:20 +0900
committerGitHub <noreply@github.com>2020-07-27 13:34:20 +0900
commitcf43dd6ec530ba4a3f589ae917e89533b352f6a3 (patch)
tree76f35d06299b40370ec061ee5ed58182847d2e6e /src/models
parentrefactor(client): Do not mutate prop directly (diff)
downloadmisskey-cf43dd6ec530ba4a3f589ae917e89533b352f6a3.tar.gz
misskey-cf43dd6ec530ba4a3f589ae917e89533b352f6a3.tar.bz2
misskey-cf43dd6ec530ba4a3f589ae917e89533b352f6a3.zip
ワードミュート (#6594)
* wip * wip * wip * wip * wip * wip * wip * wip * wip
Diffstat (limited to 'src/models')
-rw-r--r--src/models/entities/muted-note.ts48
-rw-r--r--src/models/entities/user-profile.ts11
-rw-r--r--src/models/index.ts2
-rw-r--r--src/models/repositories/user.ts1
4 files changed, 62 insertions, 0 deletions
diff --git a/src/models/entities/muted-note.ts b/src/models/entities/muted-note.ts
new file mode 100644
index 0000000000..521876688c
--- /dev/null
+++ b/src/models/entities/muted-note.ts
@@ -0,0 +1,48 @@
+import { Entity, Index, JoinColumn, Column, ManyToOne, PrimaryColumn } from 'typeorm';
+import { Note } from './note';
+import { User } from './user';
+import { id } from '../id';
+import { mutedNoteReasons } from '../../types';
+
+@Entity()
+@Index(['noteId', 'userId'], { unique: true })
+export class MutedNote {
+ @PrimaryColumn(id())
+ public id: string;
+
+ @Index()
+ @Column({
+ ...id(),
+ comment: 'The note ID.'
+ })
+ public noteId: Note['id'];
+
+ @ManyToOne(type => Note, {
+ onDelete: 'CASCADE'
+ })
+ @JoinColumn()
+ public note: Note | null;
+
+ @Index()
+ @Column({
+ ...id(),
+ comment: 'The user ID.'
+ })
+ public userId: User['id'];
+
+ @ManyToOne(type => User, {
+ onDelete: 'CASCADE'
+ })
+ @JoinColumn()
+ public user: User | null;
+
+ /**
+ * ミュートされた理由。
+ */
+ @Index()
+ @Column('enum', {
+ enum: mutedNoteReasons,
+ comment: 'The reason of the MutedNote.'
+ })
+ public reason: typeof mutedNoteReasons[number];
+}
diff --git a/src/models/entities/user-profile.ts b/src/models/entities/user-profile.ts
index a89d7364f3..0a6722aace 100644
--- a/src/models/entities/user-profile.ts
+++ b/src/models/entities/user-profile.ts
@@ -147,6 +147,17 @@ export class UserProfile {
})
public integrations: Record<string, any>;
+ @Index()
+ @Column('boolean', {
+ default: false,
+ })
+ public enableWordMute: boolean;
+
+ @Column('jsonb', {
+ default: []
+ })
+ public mutedWords: string[][];
+
//#region Denormalized fields
@Index()
@Column('varchar', {
diff --git a/src/models/index.ts b/src/models/index.ts
index e1389e7353..e58d8b551d 100644
--- a/src/models/index.ts
+++ b/src/models/index.ts
@@ -53,6 +53,7 @@ import { PromoNote } from './entities/promo-note';
import { PromoRead } from './entities/promo-read';
import { EmojiRepository } from './repositories/emoji';
import { RelayRepository } from './repositories/relay';
+import { MutedNote } from './entities/muted-note';
export const Announcements = getRepository(Announcement);
export const AnnouncementReads = getRepository(AnnouncementRead);
@@ -108,3 +109,4 @@ export const AntennaNotes = getRepository(AntennaNote);
export const PromoNotes = getRepository(PromoNote);
export const PromoReads = getRepository(PromoRead);
export const Relays = getCustomRepository(RelayRepository);
+export const MutedNotes = getRepository(MutedNote);
diff --git a/src/models/repositories/user.ts b/src/models/repositories/user.ts
index bbaafc9050..955a70ee60 100644
--- a/src/models/repositories/user.ts
+++ b/src/models/repositories/user.ts
@@ -239,6 +239,7 @@ export class UserRepository extends Repository<User> {
hasUnreadNotification: this.getHasUnreadNotification(user.id),
hasPendingReceivedFollowRequest: this.getHasPendingReceivedFollowRequest(user.id),
integrations: profile!.integrations,
+ mutedWords: profile!.mutedWords,
} : {}),
...(opts.includeSecrets ? {