Resolve #4941
This commit is contained in:
parent
56678cbac0
commit
e103904a04
15 changed files with 379 additions and 34 deletions
42
src/models/entities/user-group-invite.ts
Normal file
42
src/models/entities/user-group-invite.ts
Normal file
|
@ -0,0 +1,42 @@
|
|||
import { PrimaryColumn, Entity, Index, JoinColumn, Column, ManyToOne } from 'typeorm';
|
||||
import { User } from './user';
|
||||
import { UserGroup } from './user-group';
|
||||
import { id } from '../id';
|
||||
|
||||
@Entity()
|
||||
@Index(['userId', 'userGroupId'], { unique: true })
|
||||
export class UserGroupInvite {
|
||||
@PrimaryColumn(id())
|
||||
public id: string;
|
||||
|
||||
@Column('timestamp with time zone', {
|
||||
comment: 'The created date of the UserGroupInvite.'
|
||||
})
|
||||
public createdAt: Date;
|
||||
|
||||
@Index()
|
||||
@Column({
|
||||
...id(),
|
||||
comment: 'The user ID.'
|
||||
})
|
||||
public userId: User['id'];
|
||||
|
||||
@ManyToOne(type => User, {
|
||||
onDelete: 'CASCADE'
|
||||
})
|
||||
@JoinColumn()
|
||||
public user: User | null;
|
||||
|
||||
@Index()
|
||||
@Column({
|
||||
...id(),
|
||||
comment: 'The group ID.'
|
||||
})
|
||||
public userGroupId: UserGroup['id'];
|
||||
|
||||
@ManyToOne(type => UserGroup, {
|
||||
onDelete: 'CASCADE'
|
||||
})
|
||||
@JoinColumn()
|
||||
public userGroup: UserGroup | null;
|
||||
}
|
|
@ -4,6 +4,7 @@ import { UserGroup } from './user-group';
|
|||
import { id } from '../id';
|
||||
|
||||
@Entity()
|
||||
@Index(['userId', 'userGroupId'], { unique: true })
|
||||
export class UserGroupJoining {
|
||||
@PrimaryColumn(id())
|
||||
public id: string;
|
||||
|
|
|
@ -22,6 +22,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 { FollowRequestRepository } from './repositories/follow-request';
|
||||
import { MutingRepository } from './repositories/muting';
|
||||
import { BlockingRepository } from './repositories/blocking';
|
||||
|
@ -56,6 +57,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 UserNotePinings = getRepository(UserNotePining);
|
||||
export const Followings = getCustomRepository(FollowingRepository);
|
||||
export const FollowRequests = getCustomRepository(FollowRequestRepository);
|
||||
|
|
24
src/models/repositories/user-group-invite.ts
Normal file
24
src/models/repositories/user-group-invite.ts
Normal file
|
@ -0,0 +1,24 @@
|
|||
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)));
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue