X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=server%2Fmodels%2Fvideo%2Fvideo-share.ts;h=fda2d7cea42e2231671bc59b023a8525d8550351;hb=97567dd81f508dd6295ac4d73d849aa2ce0a6549;hp=fa9a70d509b42fccb99a59e8a10b9139a91f8b15;hpb=9a4a9b6c4e193739d542f73ee85cd305067f2aea;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/models/video/video-share.ts b/server/models/video/video-share.ts index fa9a70d50..fda2d7cea 100644 --- a/server/models/video/video-share.ts +++ b/server/models/video/video-share.ts @@ -2,7 +2,7 @@ import * as Sequelize from 'sequelize' import * as Bluebird from 'bluebird' import { AllowNull, BelongsTo, Column, CreatedAt, DataType, ForeignKey, Is, Model, Scopes, Table, UpdatedAt } from 'sequelize-typescript' import { isActivityPubUrlValid } from '../../helpers/custom-validators/activitypub/misc' -import { CONSTRAINTS_FIELDS } from '../../initializers' +import { CONSTRAINTS_FIELDS } from '../../initializers/constants' import { AccountModel } from '../account/account' import { ActorModel } from '../activitypub/actor' import { throwIfNotValid } from '../utils' @@ -14,15 +14,15 @@ enum ScopeNames { WITH_ACTOR = 'WITH_ACTOR' } -@Scopes({ +@Scopes(() => ({ [ScopeNames.FULL]: { include: [ { - model: () => ActorModel, + model: ActorModel, required: true }, { - model: () => VideoModel, + model: VideoModel, required: true } ] @@ -30,12 +30,12 @@ enum ScopeNames { [ScopeNames.WITH_ACTOR]: { include: [ { - model: () => ActorModel, + model: ActorModel, required: true } ] } -}) +})) @Table({ tableName: 'videoShare', indexes: [ @@ -88,7 +88,7 @@ export class VideoShareModel extends Model { }) Video: VideoModel - static load (actorId: number, videoId: number, t: Sequelize.Transaction) { + static load (actorId: number, videoId: number, t?: Sequelize.Transaction) { return VideoShareModel.scope(ScopeNames.WITH_ACTOR).findOne({ where: { actorId, @@ -125,7 +125,7 @@ export class VideoShareModel extends Model { .then(res => res.map(r => r.Actor)) } - static loadActorsByVideoOwner (actorOwnerId: number, t: Sequelize.Transaction): Bluebird { + static loadActorsWhoSharedVideosOf (actorOwnerId: number, t: Sequelize.Transaction): Bluebird { const query = { attributes: [], include: [ @@ -200,4 +200,17 @@ export class VideoShareModel extends Model { return VideoShareModel.findAndCountAll(query) } + + static cleanOldSharesOf (videoId: number, beforeUpdatedAt: Date) { + const query = { + where: { + updatedAt: { + [Sequelize.Op.lt]: beforeUpdatedAt + }, + videoId + } + } + + return VideoShareModel.destroy(query) + } }