X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=server%2Fmodels%2Fvideo%2Fvideo-streaming-playlist.ts;h=d627e8c9da9b180683e8a7b81777e0a546c0f544;hb=cf21b2cbef61929177b9c09b5e017c3b7eb8535d;hp=0ea90d28c40561a0d050ca534b042179002997b5;hpb=5c5e587307a27e173333789b5b5167d35f468b01;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/models/video/video-streaming-playlist.ts b/server/models/video/video-streaming-playlist.ts index 0ea90d28c..d627e8c9d 100644 --- a/server/models/video/video-streaming-playlist.ts +++ b/server/models/video/video-streaming-playlist.ts @@ -1,16 +1,19 @@ +import * as memoizee from 'memoizee' +import { join } from 'path' +import { Op, QueryTypes } from 'sequelize' import { AllowNull, BelongsTo, Column, CreatedAt, DataType, ForeignKey, HasMany, Is, Model, Table, UpdatedAt } from 'sequelize-typescript' -import { isVideoFileInfoHashValid } from '../../helpers/custom-validators/videos' -import { throwIfNotValid } from '../utils' -import { VideoModel } from './video' -import { VideoRedundancyModel } from '../redundancy/video-redundancy' +import { VideoFileModel } from '@server/models/video/video-file' +import { MStreamingPlaylist } from '@server/types/models' import { VideoStreamingPlaylistType } from '../../../shared/models/videos/video-streaming-playlist.type' -import { isActivityPubUrlValid } from '../../helpers/custom-validators/activitypub/misc' -import { CONSTRAINTS_FIELDS, P2P_MEDIA_LOADER_PEER_VERSION, STATIC_PATHS } from '../../initializers/constants' -import { join } from 'path' import { sha1 } from '../../helpers/core-utils' +import { isActivityPubUrlValid } from '../../helpers/custom-validators/activitypub/misc' import { isArrayOf } from '../../helpers/custom-validators/misc' -import { Op, QueryTypes } from 'sequelize' -import { MStreamingPlaylist, MVideoFile } from '@server/typings/models' +import { isVideoFileInfoHashValid } from '../../helpers/custom-validators/videos' +import { CONSTRAINTS_FIELDS, MEMOIZE_LENGTH, MEMOIZE_TTL, P2P_MEDIA_LOADER_PEER_VERSION, STATIC_PATHS } from '../../initializers/constants' +import { VideoRedundancyModel } from '../redundancy/video-redundancy' +import { throwIfNotValid } from '../utils' +import { VideoModel } from './video' +import { AttributesOnly } from '@shared/core-utils' @Table({ tableName: 'videoStreamingPlaylist', @@ -28,7 +31,7 @@ import { MStreamingPlaylist, MVideoFile } from '@server/typings/models' } ] }) -export class VideoStreamingPlaylistModel extends Model { +export class VideoStreamingPlaylistModel extends Model>> { @CreatedAt createdAt: Date @@ -70,6 +73,14 @@ export class VideoStreamingPlaylistModel extends Model VideoFileModel, { + foreignKey: { + allowNull: true + }, + onDelete: 'CASCADE' + }) + VideoFiles: VideoFileModel[] + @HasMany(() => VideoRedundancyModel, { foreignKey: { allowNull: false @@ -79,6 +90,12 @@ export class VideoStreamingPlaylistModel extends Model results.length === 1) } - static buildP2PMediaLoaderInfoHashes (playlistUrl: string, videoFiles: MVideoFile[]) { + static buildP2PMediaLoaderInfoHashes (playlistUrl: string, files: unknown[]) { const hashes: string[] = [] // https://github.com/Novage/p2p-media-loader/blob/master/p2p-media-loader-core/lib/p2p-media-manager.ts#L115 - for (let i = 0; i < videoFiles.length; i++) { + for (let i = 0; i < files.length; i++) { hashes.push(sha1(`${P2P_MEDIA_LOADER_PEER_VERSION}${playlistUrl}+V${i}`)) } @@ -127,6 +144,17 @@ export class VideoStreamingPlaylistModel extends Model