-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathuser.entity.ts
72 lines (56 loc) · 1.59 KB
/
user.entity.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
import { Gender, Permission } from '@onepass/graphql/common/common';
import { Field, InputType, Int, ObjectType, registerEnumType } from '@nestjs/graphql';
import { pick } from 'lodash';
import { PrimaryGeneratedColumn, Column, Entity, Index } from 'typeorm';
import { Event } from './event.entity';
import { Organization } from './organization.entity';
import { Tag } from './tag.entity';
import { UserPermission } from './user-permission.entity';
const PickedGender = pick(Gender, ['M', 'F', 'NS']);
registerEnumType(PickedGender, { name: 'Gender' });
@InputType('UserInput')
@ObjectType()
@Entity()
export class User {
@Field((_) => Int)
@PrimaryGeneratedColumn()
id: number;
@Field()
@Column()
firstName: string;
@Field()
@Column()
lastName: string;
@Field()
@Column({ unique: true })
email: string;
@Field({ nullable: true })
@Column({ nullable: true })
nickname?: string;
@Field({ nullable: true })
@Index({ unique: true, where: 'chula_id IS NOT NULL' })
@Column({ nullable: true })
chulaId?: string;
@Field({ nullable: true })
@Column({ nullable: true })
address?: string;
@Field({ nullable: true })
@Column({ nullable: true })
profilePictureUrl?: string;
@Field((_) => Boolean)
@Column()
isChulaStudent: boolean;
@Field((_) => Boolean)
@Column()
didSetup: boolean;
@Field((_) => PickedGender)
@Column('enum', { enum: ['M', 'F', 'NS'] })
gender: string;
@Field((_) => [Organization])
organizations: Organization[];
permissions: UserPermission[];
@Field((_) => [Event])
events: Event[];
@Field((_) => [Tag])
interests: Tag[];
}