feat: thread mute (#7930)

* feat: thread mute

* chore: fix comment

* fix test

* fix

* refactor
This commit is contained in:
syuilo
2021-10-31 15:30:22 +09:00
committed by GitHub
parent f47a564819
commit fc65190ef7
18 changed files with 375 additions and 14 deletions

View File

@@ -0,0 +1,33 @@
import { PrimaryColumn, Entity, Index, JoinColumn, Column, ManyToOne } from 'typeorm';
import { User } from './user';
import { Note } from './note';
import { id } from '../id';
@Entity()
@Index(['userId', 'threadId'], { unique: true })
export class NoteThreadMuting {
@PrimaryColumn(id())
public id: string;
@Column('timestamp with time zone', {
})
public createdAt: Date;
@Index()
@Column({
...id(),
})
public userId: User['id'];
@ManyToOne(type => User, {
onDelete: 'CASCADE'
})
@JoinColumn()
public user: User | null;
@Index()
@Column('varchar', {
length: 256,
})
public threadId: string;
}

View File

@@ -47,6 +47,12 @@ export class Note {
@JoinColumn()
public renote: Note | null;
@Index()
@Column('varchar', {
length: 256, nullable: true
})
public threadId: string | null;
@Column('varchar', {
length: 8192, nullable: true
})

View File

@@ -7,6 +7,7 @@ import { PollVote } from './entities/poll-vote';
import { Meta } from './entities/meta';
import { SwSubscription } from './entities/sw-subscription';
import { NoteWatching } from './entities/note-watching';
import { NoteThreadMuting } from './entities/note-thread-muting';
import { NoteUnread } from './entities/note-unread';
import { RegistrationTicket } from './entities/registration-tickets';
import { UserRepository } from './repositories/user';
@@ -69,6 +70,7 @@ export const Apps = getCustomRepository(AppRepository);
export const Notes = getCustomRepository(NoteRepository);
export const NoteFavorites = getCustomRepository(NoteFavoriteRepository);
export const NoteWatchings = getRepository(NoteWatching);
export const NoteThreadMutings = getRepository(NoteThreadMuting);
export const NoteReactions = getCustomRepository(NoteReactionRepository);
export const NoteUnreads = getRepository(NoteUnread);
export const Polls = getRepository(Poll);