diff options
| author | syuilo <Syuilotan@yahoo.co.jp> | 2020-02-13 02:17:54 +0900 |
|---|---|---|
| committer | syuilo <Syuilotan@yahoo.co.jp> | 2020-02-13 02:17:54 +0900 |
| commit | 2feef8151625d9ba5d9c8b1850679b7fe84af809 (patch) | |
| tree | 2939f4fe0d06a1ad14ed8b676de99bfc314bc75c /src/models | |
| parent | フランス語と関西弁を有効に (#5925) (diff) | |
| download | sharkey-2feef8151625d9ba5d9c8b1850679b7fe84af809.tar.gz sharkey-2feef8151625d9ba5d9c8b1850679b7fe84af809.tar.bz2 sharkey-2feef8151625d9ba5d9c8b1850679b7fe84af809.zip | |
グループ招待の通知とか
Resolve #5880
Resolve #5927
Diffstat (limited to 'src/models')
| -rw-r--r-- | src/models/entities/notification.ts | 18 | ||||
| -rw-r--r-- | src/models/entities/user-group-invitation.ts (renamed from src/models/entities/user-group-invite.ts) | 4 | ||||
| -rw-r--r-- | src/models/index.ts | 4 | ||||
| -rw-r--r-- | src/models/repositories/notification.ts | 7 | ||||
| -rw-r--r-- | src/models/repositories/user-group-invitation.ts | 24 | ||||
| -rw-r--r-- | src/models/repositories/user-group-invite.ts | 24 |
6 files changed, 49 insertions, 32 deletions
diff --git a/src/models/entities/notification.ts b/src/models/entities/notification.ts index e359640e82..cd3fe9b01e 100644 --- a/src/models/entities/notification.ts +++ b/src/models/entities/notification.ts @@ -3,6 +3,7 @@ import { User } from './user'; import { id } from '../id'; import { Note } from './note'; import { FollowRequest } from './follow-request'; +import { UserGroupInvitation } from './user-group-invitation'; @Entity() export class Notification { @@ -57,12 +58,13 @@ export class Notification { * pollVote - (自分または自分がWatchしている)投稿の投票に投票された * receiveFollowRequest - フォローリクエストされた * followRequestAccepted - 自分の送ったフォローリクエストが承認された + * groupInvited - グループに招待された */ @Column('enum', { - enum: ['follow', 'mention', 'reply', 'renote', 'quote', 'reaction', 'pollVote', 'receiveFollowRequest', 'followRequestAccepted'], + enum: ['follow', 'mention', 'reply', 'renote', 'quote', 'reaction', 'pollVote', 'receiveFollowRequest', 'followRequestAccepted', 'groupInvited'], comment: 'The type of the Notification.' }) - public type: 'follow' | 'mention' | 'reply' | 'renote' | 'quote' | 'reaction' | 'pollVote' | 'receiveFollowRequest' | 'followRequestAccepted'; + public type: 'follow' | 'mention' | 'reply' | 'renote' | 'quote' | 'reaction' | 'pollVote' | 'receiveFollowRequest' | 'followRequestAccepted' | 'groupInvited'; /** * 通知が読まれたかどうか @@ -97,6 +99,18 @@ export class Notification { @JoinColumn() public followRequest: FollowRequest | null; + @Column({ + ...id(), + nullable: true + }) + public userGroupInvitationId: UserGroupInvitation['id'] | null; + + @ManyToOne(type => UserGroupInvitation, { + onDelete: 'CASCADE' + }) + @JoinColumn() + public userGroupInvitation: UserGroupInvitation | null; + @Column('varchar', { length: 128, nullable: true }) diff --git a/src/models/entities/user-group-invite.ts b/src/models/entities/user-group-invitation.ts index 2adf2c024e..6fe8f20134 100644 --- a/src/models/entities/user-group-invite.ts +++ b/src/models/entities/user-group-invitation.ts @@ -5,12 +5,12 @@ import { id } from '../id'; @Entity() @Index(['userId', 'userGroupId'], { unique: true }) -export class UserGroupInvite { +export class UserGroupInvitation { @PrimaryColumn(id()) public id: string; @Column('timestamp with time zone', { - comment: 'The created date of the UserGroupInvite.' + comment: 'The created date of the UserGroupInvitation.' }) public createdAt: Date; diff --git a/src/models/index.ts b/src/models/index.ts index 15a5c5470d..ea8fa6f911 100644 --- a/src/models/index.ts +++ b/src/models/index.ts @@ -24,7 +24,7 @@ import { UserListRepository } from './repositories/user-list'; import { UserListJoining } from './entities/user-list-joining'; import { UserGroupRepository } from './repositories/user-group'; import { UserGroupJoining } from './entities/user-group-joining'; -import { UserGroupInviteRepository } from './repositories/user-group-invite'; +import { UserGroupInvitationRepository } from './repositories/user-group-invitation'; import { FollowRequestRepository } from './repositories/follow-request'; import { MutingRepository } from './repositories/muting'; import { BlockingRepository } from './repositories/blocking'; @@ -71,7 +71,7 @@ export const UserLists = getCustomRepository(UserListRepository); export const UserListJoinings = getRepository(UserListJoining); export const UserGroups = getCustomRepository(UserGroupRepository); export const UserGroupJoinings = getRepository(UserGroupJoining); -export const UserGroupInvites = getCustomRepository(UserGroupInviteRepository); +export const UserGroupInvitations = getCustomRepository(UserGroupInvitationRepository); export const UserNotePinings = getRepository(UserNotePining); export const UsedUsernames = getRepository(UsedUsername); export const Followings = getCustomRepository(FollowingRepository); diff --git a/src/models/repositories/notification.ts b/src/models/repositories/notification.ts index 6407c19d4c..f020714f80 100644 --- a/src/models/repositories/notification.ts +++ b/src/models/repositories/notification.ts @@ -1,5 +1,5 @@ import { EntityRepository, Repository } from 'typeorm'; -import { Users, Notes } from '..'; +import { Users, Notes, UserGroupInvitations } from '..'; import { Notification } from '../entities/notification'; import { ensure } from '../../prelude/ensure'; import { awaitAll } from '../../prelude/await-all'; @@ -39,7 +39,10 @@ export class NotificationRepository extends Repository<Notification> { ...(notification.type === 'pollVote' ? { note: Notes.pack(notification.note || notification.noteId!, notification.notifieeId), choice: notification.choice - } : {}) + } : {}), + ...(notification.type === 'groupInvited' ? { + invitation: UserGroupInvitations.pack(notification.userGroupInvitationId!), + } : {}), }); } diff --git a/src/models/repositories/user-group-invitation.ts b/src/models/repositories/user-group-invitation.ts new file mode 100644 index 0000000000..0d3ad525c3 --- /dev/null +++ b/src/models/repositories/user-group-invitation.ts @@ -0,0 +1,24 @@ +import { EntityRepository, Repository } from 'typeorm'; +import { UserGroupInvitation } from '../entities/user-group-invitation'; +import { UserGroups } from '..'; +import { ensure } from '../../prelude/ensure'; + +@EntityRepository(UserGroupInvitation) +export class UserGroupInvitationRepository extends Repository<UserGroupInvitation> { + public async pack( + src: UserGroupInvitation['id'] | UserGroupInvitation, + ) { + const invitation = typeof src === 'object' ? src : await this.findOne(src).then(ensure); + + return { + id: invitation.id, + group: await UserGroups.pack(invitation.userGroup || invitation.userGroupId), + }; + } + + public packMany( + invitations: any[], + ) { + return Promise.all(invitations.map(x => this.pack(x))); + } +} diff --git a/src/models/repositories/user-group-invite.ts b/src/models/repositories/user-group-invite.ts deleted file mode 100644 index 1d4c2aa15f..0000000000 --- a/src/models/repositories/user-group-invite.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { EntityRepository, Repository } from 'typeorm'; -import { UserGroupInvite } from '../entities/user-group-invite'; -import { UserGroups } from '..'; -import { ensure } from '../../prelude/ensure'; - -@EntityRepository(UserGroupInvite) -export class UserGroupInviteRepository extends Repository<UserGroupInvite> { - public async pack( - src: UserGroupInvite['id'] | UserGroupInvite, - ) { - const invite = typeof src === 'object' ? src : await this.findOne(src).then(ensure); - - return { - id: invite.id, - group: await UserGroups.pack(invite.userGroup || invite.userGroupId), - }; - } - - public packMany( - invites: any[], - ) { - return Promise.all(invites.map(x => this.pack(x))); - } -} |