import { UserModel } from './user'
import { VideoModel } from '../video/video'
import { VideoCommentModel } from '../video/video-comment'
-import { FindOptions, Op } from 'sequelize'
+import { FindOptions, ModelIndexesOptions, Op, WhereOptions } from 'sequelize'
import { VideoChannelModel } from '../video/video-channel'
import { AccountModel } from './account'
import { VideoAbuseModel } from '../video/video-abuse'
function buildActorWithAvatarInclude () {
return {
attributes: [ 'preferredUsername' ],
- model: () => ActorModel.unscoped(),
+ model: ActorModel.unscoped(),
required: true,
include: [
{
attributes: [ 'filename' ],
- model: () => AvatarModel.unscoped(),
+ model: AvatarModel.unscoped(),
required: false
},
{
attributes: [ 'host' ],
- model: () => ServerModel.unscoped(),
+ model: ServerModel.unscoped(),
required: false
}
]
function buildVideoInclude (required: boolean) {
return {
attributes: [ 'id', 'uuid', 'name' ],
- model: () => VideoModel.unscoped(),
+ model: VideoModel.unscoped(),
required
}
}
return {
required,
attributes: [ 'id', 'name' ],
- model: () => VideoChannelModel.unscoped(),
+ model: VideoChannelModel.unscoped(),
include: withActor === true ? [ buildActorWithAvatarInclude() ] : []
}
}
return {
required,
attributes: [ 'id', 'name' ],
- model: () => AccountModel.unscoped(),
+ model: AccountModel.unscoped(),
include: withActor === true ? [ buildActorWithAvatarInclude() ] : []
}
}
-@Scopes({
+@Scopes(() => ({
[ScopeNames.WITH_ALL]: {
include: [
Object.assign(buildVideoInclude(false), {
{
attributes: [ 'id', 'originCommentId' ],
- model: () => VideoCommentModel.unscoped(),
+ model: VideoCommentModel.unscoped(),
required: false,
include: [
buildAccountInclude(true, true),
{
attributes: [ 'id' ],
- model: () => VideoAbuseModel.unscoped(),
+ model: VideoAbuseModel.unscoped(),
required: false,
include: [ buildVideoInclude(true) ]
},
{
attributes: [ 'id' ],
- model: () => VideoBlacklistModel.unscoped(),
+ model: VideoBlacklistModel.unscoped(),
required: false,
include: [ buildVideoInclude(true) ]
},
{
attributes: [ 'id', 'magnetUri', 'targetUrl', 'torrentName' ],
- model: () => VideoImportModel.unscoped(),
+ model: VideoImportModel.unscoped(),
required: false,
include: [ buildVideoInclude(false) ]
},
{
attributes: [ 'id', 'state' ],
- model: () => ActorFollowModel.unscoped(),
+ model: ActorFollowModel.unscoped(),
required: false,
include: [
{
attributes: [ 'preferredUsername' ],
- model: () => ActorModel.unscoped(),
+ model: ActorModel.unscoped(),
required: true,
as: 'ActorFollower',
include: [
{
attributes: [ 'id', 'name' ],
- model: () => AccountModel.unscoped(),
+ model: AccountModel.unscoped(),
required: true
},
{
attributes: [ 'filename' ],
- model: () => AvatarModel.unscoped(),
+ model: AvatarModel.unscoped(),
required: false
},
{
attributes: [ 'host' ],
- model: () => ServerModel.unscoped(),
+ model: ServerModel.unscoped(),
required: false
}
]
},
{
attributes: [ 'preferredUsername' ],
- model: () => ActorModel.unscoped(),
+ model: ActorModel.unscoped(),
required: true,
as: 'ActorFollowing',
include: [
},
buildAccountInclude(false, true)
- ] as any // FIXME: sequelize typings
+ ]
}
-})
+}))
@Table({
tableName: 'userNotification',
indexes: [
}
}
}
- ] as any // FIXME: sequelize typings
+ ] as (ModelIndexesOptions & { where?: WhereOptions })[]
})
export class UserNotificationModel extends Model<UserNotificationModel> {
where: {
userId,
id: {
- [Op.any]: notificationIds
+ [Op.in]: notificationIds // FIXME: sequelize ANY seems broken
}
}
}