1 import * as Sequelize from 'sequelize'
2 import { BelongsTo, Column, CreatedAt, ForeignKey, Model, Scopes, Table, UpdatedAt } from 'sequelize-typescript'
3 import { ActorModel } from '../activitypub/actor'
4 import { VideoModel } from './video'
8 WITH_ACTOR = 'WITH_ACTOR'
15 model: () => ActorModel,
19 model: () => VideoModel,
24 [ScopeNames.WITH_ACTOR]: {
27 model: () => ActorModel,
34 tableName: 'videoShare',
44 export class VideoShareModel extends Model<VideoShareModel> {
51 @ForeignKey(() => ActorModel)
55 @BelongsTo(() => ActorModel, {
63 @ForeignKey(() => VideoModel)
67 @BelongsTo(() => VideoModel, {
75 static load (actorId: number, videoId: number, t: Sequelize.Transaction) {
76 return VideoShareModel.scope(ScopeNames.WITH_ACTOR).findOne({
85 static loadActorsByShare (videoId: number, t: Sequelize.Transaction) {
99 return VideoShareModel.scope(ScopeNames.FULL).findAll(query)
100 .then(res => res.map(r => r.Actor))