diff options
Diffstat (limited to 'server/models/video/video-streaming-playlist.ts')
-rw-r--r-- | server/models/video/video-streaming-playlist.ts | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/server/models/video/video-streaming-playlist.ts b/server/models/video/video-streaming-playlist.ts index faad4cc2d..0099add4e 100644 --- a/server/models/video/video-streaming-playlist.ts +++ b/server/models/video/video-streaming-playlist.ts | |||
@@ -5,7 +5,14 @@ import { VideoModel } from './video' | |||
5 | import { VideoRedundancyModel } from '../redundancy/video-redundancy' | 5 | import { VideoRedundancyModel } from '../redundancy/video-redundancy' |
6 | import { VideoStreamingPlaylistType } from '../../../shared/models/videos/video-streaming-playlist.type' | 6 | import { VideoStreamingPlaylistType } from '../../../shared/models/videos/video-streaming-playlist.type' |
7 | import { isActivityPubUrlValid } from '../../helpers/custom-validators/activitypub/misc' | 7 | import { isActivityPubUrlValid } from '../../helpers/custom-validators/activitypub/misc' |
8 | import { CONSTRAINTS_FIELDS, P2P_MEDIA_LOADER_PEER_VERSION, STATIC_DOWNLOAD_PATHS, STATIC_PATHS } from '../../initializers/constants' | 8 | import { |
9 | CONSTRAINTS_FIELDS, | ||
10 | MEMOIZE_LENGTH, | ||
11 | MEMOIZE_TTL, | ||
12 | P2P_MEDIA_LOADER_PEER_VERSION, | ||
13 | STATIC_DOWNLOAD_PATHS, | ||
14 | STATIC_PATHS | ||
15 | } from '../../initializers/constants' | ||
9 | import { join } from 'path' | 16 | import { join } from 'path' |
10 | import { sha1 } from '../../helpers/core-utils' | 17 | import { sha1 } from '../../helpers/core-utils' |
11 | import { isArrayOf } from '../../helpers/custom-validators/misc' | 18 | import { isArrayOf } from '../../helpers/custom-validators/misc' |
@@ -13,6 +20,7 @@ import { Op, QueryTypes } from 'sequelize' | |||
13 | import { MStreamingPlaylist, MVideoFile } from '@server/typings/models' | 20 | import { MStreamingPlaylist, MVideoFile } from '@server/typings/models' |
14 | import { VideoFileModel } from '@server/models/video/video-file' | 21 | import { VideoFileModel } from '@server/models/video/video-file' |
15 | import { getTorrentFileName, getVideoFilename } from '@server/lib/video-paths' | 22 | import { getTorrentFileName, getVideoFilename } from '@server/lib/video-paths' |
23 | import * as memoizee from 'memoizee' | ||
16 | 24 | ||
17 | @Table({ | 25 | @Table({ |
18 | tableName: 'videoStreamingPlaylist', | 26 | tableName: 'videoStreamingPlaylist', |
@@ -89,6 +97,12 @@ export class VideoStreamingPlaylistModel extends Model<VideoStreamingPlaylistMod | |||
89 | }) | 97 | }) |
90 | RedundancyVideos: VideoRedundancyModel[] | 98 | RedundancyVideos: VideoRedundancyModel[] |
91 | 99 | ||
100 | static doesInfohashExistCached = memoizee(VideoStreamingPlaylistModel.doesInfohashExist, { | ||
101 | promise: true, | ||
102 | max: MEMOIZE_LENGTH.INFO_HASH_EXISTS, | ||
103 | maxAge: MEMOIZE_TTL.INFO_HASH_EXISTS | ||
104 | }) | ||
105 | |||
92 | static doesInfohashExist (infoHash: string) { | 106 | static doesInfohashExist (infoHash: string) { |
93 | const query = 'SELECT 1 FROM "videoStreamingPlaylist" WHERE $infoHash = ANY("p2pMediaLoaderInfohashes") LIMIT 1' | 107 | const query = 'SELECT 1 FROM "videoStreamingPlaylist" WHERE $infoHash = ANY("p2pMediaLoaderInfohashes") LIMIT 1' |
94 | const options = { | 108 | const options = { |