]>
Commit | Line | Data |
---|---|---|
1 | import { | |
2 | AfterDestroy, | |
3 | AfterUpdate, | |
4 | AllowNull, | |
5 | BelongsTo, | |
6 | Column, | |
7 | CreatedAt, | |
8 | Default, | |
9 | ForeignKey, | |
10 | Is, | |
11 | Model, | |
12 | Table, | |
13 | UpdatedAt | |
14 | } from 'sequelize-typescript' | |
15 | import { MNotificationSettingFormattable } from '@server/types/models' | |
16 | import { UserNotificationSetting, UserNotificationSettingValue } from '../../../shared/models/users/user-notification-setting.model' | |
17 | import { isUserNotificationSettingValid } from '../../helpers/custom-validators/user-notifications' | |
18 | import { clearCacheByUserId } from '../../lib/oauth-model' | |
19 | import { throwIfNotValid } from '../utils' | |
20 | import { UserModel } from './user' | |
21 | ||
22 | @Table({ | |
23 | tableName: 'userNotificationSetting', | |
24 | indexes: [ | |
25 | { | |
26 | fields: [ 'userId' ], | |
27 | unique: true | |
28 | } | |
29 | ] | |
30 | }) | |
31 | export class UserNotificationSettingModel extends Model { | |
32 | ||
33 | @AllowNull(false) | |
34 | @Default(null) | |
35 | @Is( | |
36 | 'UserNotificationSettingNewVideoFromSubscription', | |
37 | value => throwIfNotValid(value, isUserNotificationSettingValid, 'newVideoFromSubscription') | |
38 | ) | |
39 | @Column | |
40 | newVideoFromSubscription: UserNotificationSettingValue | |
41 | ||
42 | @AllowNull(false) | |
43 | @Default(null) | |
44 | @Is( | |
45 | 'UserNotificationSettingNewCommentOnMyVideo', | |
46 | value => throwIfNotValid(value, isUserNotificationSettingValid, 'newCommentOnMyVideo') | |
47 | ) | |
48 | @Column | |
49 | newCommentOnMyVideo: UserNotificationSettingValue | |
50 | ||
51 | @AllowNull(false) | |
52 | @Default(null) | |
53 | @Is( | |
54 | 'UserNotificationSettingAbuseAsModerator', | |
55 | value => throwIfNotValid(value, isUserNotificationSettingValid, 'abuseAsModerator') | |
56 | ) | |
57 | @Column | |
58 | abuseAsModerator: UserNotificationSettingValue | |
59 | ||
60 | @AllowNull(false) | |
61 | @Default(null) | |
62 | @Is( | |
63 | 'UserNotificationSettingVideoAutoBlacklistAsModerator', | |
64 | value => throwIfNotValid(value, isUserNotificationSettingValid, 'videoAutoBlacklistAsModerator') | |
65 | ) | |
66 | @Column | |
67 | videoAutoBlacklistAsModerator: UserNotificationSettingValue | |
68 | ||
69 | @AllowNull(false) | |
70 | @Default(null) | |
71 | @Is( | |
72 | 'UserNotificationSettingBlacklistOnMyVideo', | |
73 | value => throwIfNotValid(value, isUserNotificationSettingValid, 'blacklistOnMyVideo') | |
74 | ) | |
75 | @Column | |
76 | blacklistOnMyVideo: UserNotificationSettingValue | |
77 | ||
78 | @AllowNull(false) | |
79 | @Default(null) | |
80 | @Is( | |
81 | 'UserNotificationSettingMyVideoPublished', | |
82 | value => throwIfNotValid(value, isUserNotificationSettingValid, 'myVideoPublished') | |
83 | ) | |
84 | @Column | |
85 | myVideoPublished: UserNotificationSettingValue | |
86 | ||
87 | @AllowNull(false) | |
88 | @Default(null) | |
89 | @Is( | |
90 | 'UserNotificationSettingMyVideoImportFinished', | |
91 | value => throwIfNotValid(value, isUserNotificationSettingValid, 'myVideoImportFinished') | |
92 | ) | |
93 | @Column | |
94 | myVideoImportFinished: UserNotificationSettingValue | |
95 | ||
96 | @AllowNull(false) | |
97 | @Default(null) | |
98 | @Is( | |
99 | 'UserNotificationSettingNewUserRegistration', | |
100 | value => throwIfNotValid(value, isUserNotificationSettingValid, 'newUserRegistration') | |
101 | ) | |
102 | @Column | |
103 | newUserRegistration: UserNotificationSettingValue | |
104 | ||
105 | @AllowNull(false) | |
106 | @Default(null) | |
107 | @Is( | |
108 | 'UserNotificationSettingNewInstanceFollower', | |
109 | value => throwIfNotValid(value, isUserNotificationSettingValid, 'newInstanceFollower') | |
110 | ) | |
111 | @Column | |
112 | newInstanceFollower: UserNotificationSettingValue | |
113 | ||
114 | @AllowNull(false) | |
115 | @Default(null) | |
116 | @Is( | |
117 | 'UserNotificationSettingNewInstanceFollower', | |
118 | value => throwIfNotValid(value, isUserNotificationSettingValid, 'autoInstanceFollowing') | |
119 | ) | |
120 | @Column | |
121 | autoInstanceFollowing: UserNotificationSettingValue | |
122 | ||
123 | @AllowNull(false) | |
124 | @Default(null) | |
125 | @Is( | |
126 | 'UserNotificationSettingNewFollow', | |
127 | value => throwIfNotValid(value, isUserNotificationSettingValid, 'newFollow') | |
128 | ) | |
129 | @Column | |
130 | newFollow: UserNotificationSettingValue | |
131 | ||
132 | @AllowNull(false) | |
133 | @Default(null) | |
134 | @Is( | |
135 | 'UserNotificationSettingCommentMention', | |
136 | value => throwIfNotValid(value, isUserNotificationSettingValid, 'commentMention') | |
137 | ) | |
138 | @Column | |
139 | commentMention: UserNotificationSettingValue | |
140 | ||
141 | @AllowNull(false) | |
142 | @Default(null) | |
143 | @Is( | |
144 | 'UserNotificationSettingAbuseStateChange', | |
145 | value => throwIfNotValid(value, isUserNotificationSettingValid, 'abuseStateChange') | |
146 | ) | |
147 | @Column | |
148 | abuseStateChange: UserNotificationSettingValue | |
149 | ||
150 | @AllowNull(false) | |
151 | @Default(null) | |
152 | @Is( | |
153 | 'UserNotificationSettingAbuseNewMessage', | |
154 | value => throwIfNotValid(value, isUserNotificationSettingValid, 'abuseNewMessage') | |
155 | ) | |
156 | @Column | |
157 | abuseNewMessage: UserNotificationSettingValue | |
158 | ||
159 | @ForeignKey(() => UserModel) | |
160 | @Column | |
161 | userId: number | |
162 | ||
163 | @BelongsTo(() => UserModel, { | |
164 | foreignKey: { | |
165 | allowNull: false | |
166 | }, | |
167 | onDelete: 'cascade' | |
168 | }) | |
169 | User: UserModel | |
170 | ||
171 | @CreatedAt | |
172 | createdAt: Date | |
173 | ||
174 | @UpdatedAt | |
175 | updatedAt: Date | |
176 | ||
177 | @AfterUpdate | |
178 | @AfterDestroy | |
179 | static removeTokenCache (instance: UserNotificationSettingModel) { | |
180 | return clearCacheByUserId(instance.userId) | |
181 | } | |
182 | ||
183 | toFormattedJSON (this: MNotificationSettingFormattable): UserNotificationSetting { | |
184 | return { | |
185 | newCommentOnMyVideo: this.newCommentOnMyVideo, | |
186 | newVideoFromSubscription: this.newVideoFromSubscription, | |
187 | abuseAsModerator: this.abuseAsModerator, | |
188 | videoAutoBlacklistAsModerator: this.videoAutoBlacklistAsModerator, | |
189 | blacklistOnMyVideo: this.blacklistOnMyVideo, | |
190 | myVideoPublished: this.myVideoPublished, | |
191 | myVideoImportFinished: this.myVideoImportFinished, | |
192 | newUserRegistration: this.newUserRegistration, | |
193 | commentMention: this.commentMention, | |
194 | newFollow: this.newFollow, | |
195 | newInstanceFollower: this.newInstanceFollower, | |
196 | autoInstanceFollowing: this.autoInstanceFollowing, | |
197 | abuseNewMessage: this.abuseNewMessage, | |
198 | abuseStateChange: this.abuseStateChange | |
199 | } | |
200 | } | |
201 | } |