diff options
Diffstat (limited to 'server/models/account')
-rw-r--r-- | server/models/account/account.ts | 3 | ||||
-rw-r--r-- | server/models/account/user-video-history.ts | 55 | ||||
-rw-r--r-- | server/models/account/user.ts | 23 |
3 files changed, 78 insertions, 3 deletions
diff --git a/server/models/account/account.ts b/server/models/account/account.ts index 27c75d886..5a237d733 100644 --- a/server/models/account/account.ts +++ b/server/models/account/account.ts | |||
@@ -248,7 +248,8 @@ export class AccountModel extends Model<AccountModel> { | |||
248 | displayName: this.getDisplayName(), | 248 | displayName: this.getDisplayName(), |
249 | description: this.description, | 249 | description: this.description, |
250 | createdAt: this.createdAt, | 250 | createdAt: this.createdAt, |
251 | updatedAt: this.updatedAt | 251 | updatedAt: this.updatedAt, |
252 | userId: this.userId ? this.userId : undefined | ||
252 | } | 253 | } |
253 | 254 | ||
254 | return Object.assign(actor, account) | 255 | return Object.assign(actor, account) |
diff --git a/server/models/account/user-video-history.ts b/server/models/account/user-video-history.ts new file mode 100644 index 000000000..0476cad9d --- /dev/null +++ b/server/models/account/user-video-history.ts | |||
@@ -0,0 +1,55 @@ | |||
1 | import { AllowNull, BelongsTo, Column, CreatedAt, ForeignKey, IsInt, Min, Model, Table, UpdatedAt } from 'sequelize-typescript' | ||
2 | import { VideoModel } from '../video/video' | ||
3 | import { UserModel } from './user' | ||
4 | |||
5 | @Table({ | ||
6 | tableName: 'userVideoHistory', | ||
7 | indexes: [ | ||
8 | { | ||
9 | fields: [ 'userId', 'videoId' ], | ||
10 | unique: true | ||
11 | }, | ||
12 | { | ||
13 | fields: [ 'userId' ] | ||
14 | }, | ||
15 | { | ||
16 | fields: [ 'videoId' ] | ||
17 | } | ||
18 | ] | ||
19 | }) | ||
20 | export class UserVideoHistoryModel extends Model<UserVideoHistoryModel> { | ||
21 | @CreatedAt | ||
22 | createdAt: Date | ||
23 | |||
24 | @UpdatedAt | ||
25 | updatedAt: Date | ||
26 | |||
27 | @AllowNull(false) | ||
28 | @IsInt | ||
29 | @Column | ||
30 | currentTime: number | ||
31 | |||
32 | @ForeignKey(() => VideoModel) | ||
33 | @Column | ||
34 | videoId: number | ||
35 | |||
36 | @BelongsTo(() => VideoModel, { | ||
37 | foreignKey: { | ||
38 | allowNull: false | ||
39 | }, | ||
40 | onDelete: 'CASCADE' | ||
41 | }) | ||
42 | Video: VideoModel | ||
43 | |||
44 | @ForeignKey(() => UserModel) | ||
45 | @Column | ||
46 | userId: number | ||
47 | |||
48 | @BelongsTo(() => UserModel, { | ||
49 | foreignKey: { | ||
50 | allowNull: false | ||
51 | }, | ||
52 | onDelete: 'CASCADE' | ||
53 | }) | ||
54 | User: UserModel | ||
55 | } | ||
diff --git a/server/models/account/user.ts b/server/models/account/user.ts index e56b0bf40..39654cfcf 100644 --- a/server/models/account/user.ts +++ b/server/models/account/user.ts | |||
@@ -181,7 +181,25 @@ export class UserModel extends Model<UserModel> { | |||
181 | return this.count() | 181 | return this.count() |
182 | } | 182 | } |
183 | 183 | ||
184 | static listForApi (start: number, count: number, sort: string) { | 184 | static listForApi (start: number, count: number, sort: string, search?: string) { |
185 | let where = undefined | ||
186 | if (search) { | ||
187 | where = { | ||
188 | [Sequelize.Op.or]: [ | ||
189 | { | ||
190 | email: { | ||
191 | [Sequelize.Op.iLike]: '%' + search + '%' | ||
192 | } | ||
193 | }, | ||
194 | { | ||
195 | username: { | ||
196 | [ Sequelize.Op.iLike ]: '%' + search + '%' | ||
197 | } | ||
198 | } | ||
199 | ] | ||
200 | } | ||
201 | } | ||
202 | |||
185 | const query = { | 203 | const query = { |
186 | attributes: { | 204 | attributes: { |
187 | include: [ | 205 | include: [ |
@@ -204,7 +222,8 @@ export class UserModel extends Model<UserModel> { | |||
204 | }, | 222 | }, |
205 | offset: start, | 223 | offset: start, |
206 | limit: count, | 224 | limit: count, |
207 | order: getSort(sort) | 225 | order: getSort(sort), |
226 | where | ||
208 | } | 227 | } |
209 | 228 | ||
210 | return UserModel.findAndCountAll(query) | 229 | return UserModel.findAndCountAll(query) |