This commit is contained in:
syuilo
2020-02-15 01:03:59 +09:00
parent 84958af4ce
commit 65c0b6c7da
10 changed files with 123 additions and 9 deletions

View File

@ -2,6 +2,7 @@ import { PrimaryColumn, Entity, Index, JoinColumn, Column, ManyToOne } from 'typ
import { User } from './user';
import { id } from '../id';
import { UserList } from './user-list';
import { UserGroupJoining } from './user-group-joining';
@Entity()
export class Antenna {
@ -32,8 +33,8 @@ export class Antenna {
})
public name: string;
@Column('enum', { enum: ['home', 'all', 'users', 'list'] })
public src: 'home' | 'all' | 'users' | 'list';
@Column('enum', { enum: ['home', 'all', 'users', 'list', 'group'] })
public src: 'home' | 'all' | 'users' | 'list' | 'group';
@Column({
...id(),
@ -47,6 +48,18 @@ export class Antenna {
@JoinColumn()
public userList: UserList | null;
@Column({
...id(),
nullable: true
})
public userGroupJoiningId: UserGroupJoining['id'] | null;
@ManyToOne(type => UserGroupJoining, {
onDelete: 'CASCADE'
})
@JoinColumn()
public userGroupJoining: UserGroupJoining | null;
@Column('varchar', {
length: 1024, array: true,
default: '{}'

View File

@ -2,7 +2,7 @@ import { EntityRepository, Repository } from 'typeorm';
import { Antenna } from '../entities/antenna';
import { ensure } from '../../prelude/ensure';
import { SchemaType } from '../../misc/schema';
import { AntennaNotes } from '..';
import { AntennaNotes, UserGroupJoinings } from '..';
export type PackedAntenna = SchemaType<typeof packedAntennaSchema>;
@ -14,6 +14,7 @@ export class AntennaRepository extends Repository<Antenna> {
const antenna = typeof src === 'object' ? src : await this.findOne(src).then(ensure);
const hasUnreadNote = (await AntennaNotes.findOne({ antennaId: antenna.id, read: false })) != null;
const userGroupJoining = antenna.userGroupJoiningId ? await UserGroupJoinings.findOne(antenna.userGroupJoiningId) : null;
return {
id: antenna.id,
@ -22,6 +23,7 @@ export class AntennaRepository extends Repository<Antenna> {
keywords: antenna.keywords,
src: antenna.src,
userListId: antenna.userListId,
userGroupId: userGroupJoining ? userGroupJoining.userGroupId : null,
users: antenna.users,
caseSensitive: antenna.caseSensitive,
notify: antenna.notify,