aboutsummaryrefslogtreecommitdiffhomepage
path: root/server/models/video
diff options
context:
space:
mode:
Diffstat (limited to 'server/models/video')
-rw-r--r--server/models/video/video-blacklist-interface.ts11
-rw-r--r--server/models/video/video-blacklist.ts18
-rw-r--r--server/models/video/video-channel-interface.ts12
-rw-r--r--server/models/video/video-channel.ts13
-rw-r--r--server/models/video/video-interface.ts17
-rw-r--r--server/models/video/video.ts137
6 files changed, 7 insertions, 201 deletions
diff --git a/server/models/video/video-blacklist-interface.ts b/server/models/video/video-blacklist-interface.ts
index 9d167c037..be2483d4c 100644
--- a/server/models/video/video-blacklist-interface.ts
+++ b/server/models/video/video-blacklist-interface.ts
@@ -10,24 +10,13 @@ import { BlacklistedVideo as FormattedBlacklistedVideo } from '../../../shared/m
10 10
11export namespace BlacklistedVideoMethods { 11export namespace BlacklistedVideoMethods {
12 export type ToFormattedJSON = (this: BlacklistedVideoInstance) => FormattedBlacklistedVideo 12 export type ToFormattedJSON = (this: BlacklistedVideoInstance) => FormattedBlacklistedVideo
13
14 export type CountTotal = () => Promise<number>
15
16 export type List = () => Promise<BlacklistedVideoInstance[]>
17
18 export type ListForApi = (start: number, count: number, sort: SortType) => Promise< ResultList<BlacklistedVideoInstance> > 13 export type ListForApi = (start: number, count: number, sort: SortType) => Promise< ResultList<BlacklistedVideoInstance> >
19
20 export type LoadById = (id: number) => Promise<BlacklistedVideoInstance>
21
22 export type LoadByVideoId = (id: number) => Promise<BlacklistedVideoInstance> 14 export type LoadByVideoId = (id: number) => Promise<BlacklistedVideoInstance>
23} 15}
24 16
25export interface BlacklistedVideoClass { 17export interface BlacklistedVideoClass {
26 toFormattedJSON: BlacklistedVideoMethods.ToFormattedJSON 18 toFormattedJSON: BlacklistedVideoMethods.ToFormattedJSON
27 countTotal: BlacklistedVideoMethods.CountTotal
28 list: BlacklistedVideoMethods.List
29 listForApi: BlacklistedVideoMethods.ListForApi 19 listForApi: BlacklistedVideoMethods.ListForApi
30 loadById: BlacklistedVideoMethods.LoadById
31 loadByVideoId: BlacklistedVideoMethods.LoadByVideoId 20 loadByVideoId: BlacklistedVideoMethods.LoadByVideoId
32} 21}
33 22
diff --git a/server/models/video/video-blacklist.ts b/server/models/video/video-blacklist.ts
index 1c279b1ba..ae8286285 100644
--- a/server/models/video/video-blacklist.ts
+++ b/server/models/video/video-blacklist.ts
@@ -12,10 +12,7 @@ import {
12 12
13let BlacklistedVideo: Sequelize.Model<BlacklistedVideoInstance, BlacklistedVideoAttributes> 13let BlacklistedVideo: Sequelize.Model<BlacklistedVideoInstance, BlacklistedVideoAttributes>
14let toFormattedJSON: BlacklistedVideoMethods.ToFormattedJSON 14let toFormattedJSON: BlacklistedVideoMethods.ToFormattedJSON
15let countTotal: BlacklistedVideoMethods.CountTotal
16let list: BlacklistedVideoMethods.List
17let listForApi: BlacklistedVideoMethods.ListForApi 15let listForApi: BlacklistedVideoMethods.ListForApi
18let loadById: BlacklistedVideoMethods.LoadById
19let loadByVideoId: BlacklistedVideoMethods.LoadByVideoId 16let loadByVideoId: BlacklistedVideoMethods.LoadByVideoId
20 17
21export default function (sequelize: Sequelize.Sequelize, DataTypes: Sequelize.DataTypes) { 18export default function (sequelize: Sequelize.Sequelize, DataTypes: Sequelize.DataTypes) {
@@ -34,10 +31,7 @@ export default function (sequelize: Sequelize.Sequelize, DataTypes: Sequelize.Da
34 const classMethods = [ 31 const classMethods = [
35 associate, 32 associate,
36 33
37 countTotal,
38 list,
39 listForApi, 34 listForApi,
40 loadById,
41 loadByVideoId 35 loadByVideoId
42 ] 36 ]
43 const instanceMethods = [ 37 const instanceMethods = [
@@ -83,14 +77,6 @@ function associate (models) {
83 }) 77 })
84} 78}
85 79
86countTotal = function () {
87 return BlacklistedVideo.count()
88}
89
90list = function () {
91 return BlacklistedVideo.findAll()
92}
93
94listForApi = function (start: number, count: number, sort: SortType) { 80listForApi = function (start: number, count: number, sort: SortType) {
95 const query = { 81 const query = {
96 offset: start, 82 offset: start,
@@ -107,10 +93,6 @@ listForApi = function (start: number, count: number, sort: SortType) {
107 }) 93 })
108} 94}
109 95
110loadById = function (id: number) {
111 return BlacklistedVideo.findById(id)
112}
113
114loadByVideoId = function (id: number) { 96loadByVideoId = function (id: number) {
115 const query = { 97 const query = {
116 where: { 98 where: {
diff --git a/server/models/video/video-channel-interface.ts b/server/models/video/video-channel-interface.ts
index 8ad3e5cb7..b409d1db3 100644
--- a/server/models/video/video-channel-interface.ts
+++ b/server/models/video/video-channel-interface.ts
@@ -1,13 +1,11 @@
1import * as Sequelize from 'sequelize'
2import * as Promise from 'bluebird' 1import * as Promise from 'bluebird'
2import * as Sequelize from 'sequelize'
3 3
4import { ResultList } from '../../../shared' 4import { ResultList } from '../../../shared'
5 5import { VideoChannelObject } from '../../../shared/models/activitypub/objects/video-channel-object'
6// Don't use barrel, import just what we need
7import { VideoChannel as FormattedVideoChannel } from '../../../shared/models/videos/video-channel.model' 6import { VideoChannel as FormattedVideoChannel } from '../../../shared/models/videos/video-channel.model'
8import { VideoInstance } from './video-interface'
9import { AccountInstance } from '../account/account-interface' 7import { AccountInstance } from '../account/account-interface'
10import { VideoChannelObject } from '../../../shared/models/activitypub/objects/video-channel-object' 8import { VideoInstance } from './video-interface'
11 9
12export namespace VideoChannelMethods { 10export namespace VideoChannelMethods {
13 export type ToFormattedJSON = (this: VideoChannelInstance) => FormattedVideoChannel 11 export type ToFormattedJSON = (this: VideoChannelInstance) => FormattedVideoChannel
@@ -15,7 +13,6 @@ export namespace VideoChannelMethods {
15 export type IsOwned = (this: VideoChannelInstance) => boolean 13 export type IsOwned = (this: VideoChannelInstance) => boolean
16 14
17 export type CountByAccount = (accountId: number) => Promise<number> 15 export type CountByAccount = (accountId: number) => Promise<number>
18 export type ListOwned = () => Promise<VideoChannelInstance[]>
19 export type ListForApi = (start: number, count: number, sort: string) => Promise< ResultList<VideoChannelInstance> > 16 export type ListForApi = (start: number, count: number, sort: string) => Promise< ResultList<VideoChannelInstance> >
20 export type LoadByIdAndAccount = (id: number, accountId: number) => Promise<VideoChannelInstance> 17 export type LoadByIdAndAccount = (id: number, accountId: number) => Promise<VideoChannelInstance>
21 export type ListByAccount = (accountId: number) => Promise< ResultList<VideoChannelInstance> > 18 export type ListByAccount = (accountId: number) => Promise< ResultList<VideoChannelInstance> >
@@ -32,10 +29,7 @@ export interface VideoChannelClass {
32 countByAccount: VideoChannelMethods.CountByAccount 29 countByAccount: VideoChannelMethods.CountByAccount
33 listForApi: VideoChannelMethods.ListForApi 30 listForApi: VideoChannelMethods.ListForApi
34 listByAccount: VideoChannelMethods.ListByAccount 31 listByAccount: VideoChannelMethods.ListByAccount
35 listOwned: VideoChannelMethods.ListOwned
36 loadByIdAndAccount: VideoChannelMethods.LoadByIdAndAccount 32 loadByIdAndAccount: VideoChannelMethods.LoadByIdAndAccount
37 loadByUUID: VideoChannelMethods.LoadByUUID
38 loadByHostAndUUID: VideoChannelMethods.LoadByHostAndUUID
39 loadAndPopulateAccount: VideoChannelMethods.LoadAndPopulateAccount 33 loadAndPopulateAccount: VideoChannelMethods.LoadAndPopulateAccount
40 loadByUUIDAndPopulateAccount: VideoChannelMethods.LoadByUUIDAndPopulateAccount 34 loadByUUIDAndPopulateAccount: VideoChannelMethods.LoadByUUIDAndPopulateAccount
41 loadAndPopulateAccountAndVideos: VideoChannelMethods.LoadAndPopulateAccountAndVideos 35 loadAndPopulateAccountAndVideos: VideoChannelMethods.LoadAndPopulateAccountAndVideos
diff --git a/server/models/video/video-channel.ts b/server/models/video/video-channel.ts
index 93566a5c6..64130310d 100644
--- a/server/models/video/video-channel.ts
+++ b/server/models/video/video-channel.ts
@@ -12,7 +12,6 @@ let toFormattedJSON: VideoChannelMethods.ToFormattedJSON
12let toActivityPubObject: VideoChannelMethods.ToActivityPubObject 12let toActivityPubObject: VideoChannelMethods.ToActivityPubObject
13let isOwned: VideoChannelMethods.IsOwned 13let isOwned: VideoChannelMethods.IsOwned
14let countByAccount: VideoChannelMethods.CountByAccount 14let countByAccount: VideoChannelMethods.CountByAccount
15let listOwned: VideoChannelMethods.ListOwned
16let listForApi: VideoChannelMethods.ListForApi 15let listForApi: VideoChannelMethods.ListForApi
17let listByAccount: VideoChannelMethods.ListByAccount 16let listByAccount: VideoChannelMethods.ListByAccount
18let loadByIdAndAccount: VideoChannelMethods.LoadByIdAndAccount 17let loadByIdAndAccount: VideoChannelMethods.LoadByIdAndAccount
@@ -88,7 +87,6 @@ export default function (sequelize: Sequelize.Sequelize, DataTypes: Sequelize.Da
88 87
89 listForApi, 88 listForApi,
90 listByAccount, 89 listByAccount,
91 listOwned,
92 loadByIdAndAccount, 90 loadByIdAndAccount,
93 loadAndPopulateAccount, 91 loadAndPopulateAccount,
94 loadByUUIDAndPopulateAccount, 92 loadByUUIDAndPopulateAccount,
@@ -192,17 +190,6 @@ countByAccount = function (accountId: number) {
192 return VideoChannel.count(query) 190 return VideoChannel.count(query)
193} 191}
194 192
195listOwned = function () {
196 const query = {
197 where: {
198 remote: false
199 },
200 include: [ VideoChannel['sequelize'].models.Account ]
201 }
202
203 return VideoChannel.findAll(query)
204}
205
206listForApi = function (start: number, count: number, sort: string) { 193listForApi = function (start: number, count: number, sort: string) {
207 const query = { 194 const query = {
208 offset: start, 195 offset: start,
diff --git a/server/models/video/video-interface.ts b/server/models/video/video-interface.ts
index 89e528acf..be140de86 100644
--- a/server/models/video/video-interface.ts
+++ b/server/models/video/video-interface.ts
@@ -3,13 +3,12 @@ import * as Sequelize from 'sequelize'
3import { VideoTorrentObject } from '../../../shared/models/activitypub/objects/video-torrent-object' 3import { VideoTorrentObject } from '../../../shared/models/activitypub/objects/video-torrent-object'
4import { ResultList } from '../../../shared/models/result-list.model' 4import { ResultList } from '../../../shared/models/result-list.model'
5import { Video as FormattedVideo, VideoDetails as FormattedDetailsVideo } from '../../../shared/models/videos/video.model' 5import { Video as FormattedVideo, VideoDetails as FormattedDetailsVideo } from '../../../shared/models/videos/video.model'
6import { AccountVideoRateInstance } from '../account/account-video-rate-interface'
6 7
7import { TagAttributes, TagInstance } from './tag-interface' 8import { TagAttributes, TagInstance } from './tag-interface'
8import { VideoChannelInstance } from './video-channel-interface' 9import { VideoChannelInstance } from './video-channel-interface'
9import { VideoFileAttributes, VideoFileInstance } from './video-file-interface' 10import { VideoFileAttributes, VideoFileInstance } from './video-file-interface'
10import { VideoShareInstance } from './video-share-interface' 11import { VideoShareInstance } from './video-share-interface'
11import { UserVideoRate } from '../../../shared/models/videos/user-video-rate.model'
12import { AccountVideoRateInstance } from '../account/account-video-rate-interface'
13 12
14export namespace VideoMethods { 13export namespace VideoMethods {
15 export type GetThumbnailName = (this: VideoInstance) => string 14 export type GetThumbnailName = (this: VideoInstance) => string
@@ -40,12 +39,7 @@ export namespace VideoMethods {
40 export type GetLicenceLabel = (this: VideoInstance) => string 39 export type GetLicenceLabel = (this: VideoInstance) => string
41 export type GetLanguageLabel = (this: VideoInstance) => string 40 export type GetLanguageLabel = (this: VideoInstance) => string
42 41
43 // Return thumbnail name
44 export type GenerateThumbnailFromData = (video: VideoInstance, thumbnailData: string) => Promise<string>
45
46 export type List = () => Bluebird<VideoInstance[]> 42 export type List = () => Bluebird<VideoInstance[]>
47 export type ListOwnedAndPopulateAccountAndTags = () => Bluebird<VideoInstance[]>
48 export type ListOwnedByAccount = (account: string) => Bluebird<VideoInstance[]>
49 43
50 export type ListAllAndSharedByAccountForOutbox = ( 44 export type ListAllAndSharedByAccountForOutbox = (
51 accountId: number, 45 accountId: number,
@@ -65,9 +59,6 @@ export namespace VideoMethods {
65 export type Load = (id: number) => Bluebird<VideoInstance> 59 export type Load = (id: number) => Bluebird<VideoInstance>
66 export type LoadByUUID = (uuid: string, t?: Sequelize.Transaction) => Bluebird<VideoInstance> 60 export type LoadByUUID = (uuid: string, t?: Sequelize.Transaction) => Bluebird<VideoInstance>
67 export type LoadByUrlAndPopulateAccount = (url: string, t?: Sequelize.Transaction) => Bluebird<VideoInstance> 61 export type LoadByUrlAndPopulateAccount = (url: string, t?: Sequelize.Transaction) => Bluebird<VideoInstance>
68 export type LoadLocalVideoByUUID = (uuid: string, t?: Sequelize.Transaction) => Bluebird<VideoInstance>
69 export type LoadByHostAndUUID = (fromHost: string, uuid: string, t?: Sequelize.Transaction) => Bluebird<VideoInstance>
70 export type LoadAndPopulateAccount = (id: number) => Bluebird<VideoInstance>
71 export type LoadAndPopulateAccountAndServerAndTags = (id: number) => Bluebird<VideoInstance> 62 export type LoadAndPopulateAccountAndServerAndTags = (id: number) => Bluebird<VideoInstance>
72 export type LoadByUUIDAndPopulateAccountAndServerAndTags = (uuid: string) => Bluebird<VideoInstance> 63 export type LoadByUUIDAndPopulateAccountAndServerAndTags = (uuid: string) => Bluebird<VideoInstance>
73 export type LoadByUUIDOrURL = (uuid: string, url: string, t?: Sequelize.Transaction) => Bluebird<VideoInstance> 64 export type LoadByUUIDOrURL = (uuid: string, url: string, t?: Sequelize.Transaction) => Bluebird<VideoInstance>
@@ -79,21 +70,15 @@ export namespace VideoMethods {
79} 70}
80 71
81export interface VideoClass { 72export interface VideoClass {
82 generateThumbnailFromData: VideoMethods.GenerateThumbnailFromData
83 list: VideoMethods.List 73 list: VideoMethods.List
84 listAllAndSharedByAccountForOutbox: VideoMethods.ListAllAndSharedByAccountForOutbox 74 listAllAndSharedByAccountForOutbox: VideoMethods.ListAllAndSharedByAccountForOutbox
85 listForApi: VideoMethods.ListForApi 75 listForApi: VideoMethods.ListForApi
86 listUserVideosForApi: VideoMethods.ListUserVideosForApi 76 listUserVideosForApi: VideoMethods.ListUserVideosForApi
87 listOwnedAndPopulateAccountAndTags: VideoMethods.ListOwnedAndPopulateAccountAndTags
88 listOwnedByAccount: VideoMethods.ListOwnedByAccount
89 load: VideoMethods.Load 77 load: VideoMethods.Load
90 loadAndPopulateAccount: VideoMethods.LoadAndPopulateAccount
91 loadAndPopulateAccountAndServerAndTags: VideoMethods.LoadAndPopulateAccountAndServerAndTags 78 loadAndPopulateAccountAndServerAndTags: VideoMethods.LoadAndPopulateAccountAndServerAndTags
92 loadByHostAndUUID: VideoMethods.LoadByHostAndUUID
93 loadByUUID: VideoMethods.LoadByUUID 79 loadByUUID: VideoMethods.LoadByUUID
94 loadByUrlAndPopulateAccount: VideoMethods.LoadByUrlAndPopulateAccount 80 loadByUrlAndPopulateAccount: VideoMethods.LoadByUrlAndPopulateAccount
95 loadByUUIDOrURL: VideoMethods.LoadByUUIDOrURL 81 loadByUUIDOrURL: VideoMethods.LoadByUUIDOrURL
96 loadLocalVideoByUUID: VideoMethods.LoadLocalVideoByUUID
97 loadByUUIDAndPopulateAccountAndServerAndTags: VideoMethods.LoadByUUIDAndPopulateAccountAndServerAndTags 82 loadByUUIDAndPopulateAccountAndServerAndTags: VideoMethods.LoadByUUIDAndPopulateAccountAndServerAndTags
98 searchAndPopulateAccountAndServerAndTags: VideoMethods.SearchAndPopulateAccountAndServerAndTags 83 searchAndPopulateAccountAndServerAndTags: VideoMethods.SearchAndPopulateAccountAndServerAndTags
99} 84}
diff --git a/server/models/video/video.ts b/server/models/video/video.ts
index 592fc2d59..e5fd92549 100644
--- a/server/models/video/video.ts
+++ b/server/models/video/video.ts
@@ -1,8 +1,8 @@
1import * as Bluebird from 'bluebird'
1import { map, maxBy, truncate } from 'lodash' 2import { map, maxBy, truncate } from 'lodash'
2import * as magnetUtil from 'magnet-uri' 3import * as magnetUtil from 'magnet-uri'
3import * as parseTorrent from 'parse-torrent' 4import * as parseTorrent from 'parse-torrent'
4import { join } from 'path' 5import { join } from 'path'
5import * as safeBuffer from 'safe-buffer'
6import * as Sequelize from 'sequelize' 6import * as Sequelize from 'sequelize'
7import { VideoPrivacy, VideoResolution } from '../../../shared' 7import { VideoPrivacy, VideoResolution } from '../../../shared'
8import { VideoTorrentObject } from '../../../shared/models/activitypub/objects/video-torrent-object' 8import { VideoTorrentObject } from '../../../shared/models/activitypub/objects/video-torrent-object'
@@ -25,6 +25,7 @@ import {
25 unlinkPromise, 25 unlinkPromise,
26 writeFilePromise 26 writeFilePromise
27} from '../../helpers' 27} from '../../helpers'
28import { activityPubCollection } from '../../helpers/activitypub'
28import { isVideoUrlValid } from '../../helpers/custom-validators/videos' 29import { isVideoUrlValid } from '../../helpers/custom-validators/videos'
29import { 30import {
30 API_VERSION, 31 API_VERSION,
@@ -39,17 +40,13 @@ import {
39 VIDEO_LICENCES, 40 VIDEO_LICENCES,
40 VIDEO_PRIVACIES 41 VIDEO_PRIVACIES
41} from '../../initializers' 42} from '../../initializers'
43import { sendDeleteVideo } from '../../lib/index'
42 44
43import { addMethodsToModel, getSort } from '../utils' 45import { addMethodsToModel, getSort } from '../utils'
44 46
45import { TagInstance } from './tag-interface' 47import { TagInstance } from './tag-interface'
46import { VideoFileInstance, VideoFileModel } from './video-file-interface' 48import { VideoFileInstance, VideoFileModel } from './video-file-interface'
47import { VideoAttributes, VideoInstance, VideoMethods } from './video-interface' 49import { VideoAttributes, VideoInstance, VideoMethods } from './video-interface'
48import { sendDeleteVideo } from '../../lib/index'
49import * as Bluebird from 'bluebird'
50import { activityPubCollection } from '../../helpers/activitypub'
51
52const Buffer = safeBuffer.Buffer
53 50
54let Video: Sequelize.Model<VideoInstance, VideoAttributes> 51let Video: Sequelize.Model<VideoInstance, VideoAttributes>
55let getOriginalFile: VideoMethods.GetOriginalFile 52let getOriginalFile: VideoMethods.GetOriginalFile
@@ -77,20 +74,14 @@ let getCategoryLabel: VideoMethods.GetCategoryLabel
77let getLicenceLabel: VideoMethods.GetLicenceLabel 74let getLicenceLabel: VideoMethods.GetLicenceLabel
78let getLanguageLabel: VideoMethods.GetLanguageLabel 75let getLanguageLabel: VideoMethods.GetLanguageLabel
79 76
80let generateThumbnailFromData: VideoMethods.GenerateThumbnailFromData
81let list: VideoMethods.List 77let list: VideoMethods.List
82let listForApi: VideoMethods.ListForApi 78let listForApi: VideoMethods.ListForApi
83let listAllAndSharedByAccountForOutbox: VideoMethods.ListAllAndSharedByAccountForOutbox 79let listAllAndSharedByAccountForOutbox: VideoMethods.ListAllAndSharedByAccountForOutbox
84let listUserVideosForApi: VideoMethods.ListUserVideosForApi 80let listUserVideosForApi: VideoMethods.ListUserVideosForApi
85let loadByHostAndUUID: VideoMethods.LoadByHostAndUUID
86let listOwnedAndPopulateAccountAndTags: VideoMethods.ListOwnedAndPopulateAccountAndTags
87let listOwnedByAccount: VideoMethods.ListOwnedByAccount
88let load: VideoMethods.Load 81let load: VideoMethods.Load
89let loadByUrlAndPopulateAccount: VideoMethods.LoadByUrlAndPopulateAccount 82let loadByUrlAndPopulateAccount: VideoMethods.LoadByUrlAndPopulateAccount
90let loadByUUID: VideoMethods.LoadByUUID 83let loadByUUID: VideoMethods.LoadByUUID
91let loadByUUIDOrURL: VideoMethods.LoadByUUIDOrURL 84let loadByUUIDOrURL: VideoMethods.LoadByUUIDOrURL
92let loadLocalVideoByUUID: VideoMethods.LoadLocalVideoByUUID
93let loadAndPopulateAccount: VideoMethods.LoadAndPopulateAccount
94let loadAndPopulateAccountAndServerAndTags: VideoMethods.LoadAndPopulateAccountAndServerAndTags 85let loadAndPopulateAccountAndServerAndTags: VideoMethods.LoadAndPopulateAccountAndServerAndTags
95let loadByUUIDAndPopulateAccountAndServerAndTags: VideoMethods.LoadByUUIDAndPopulateAccountAndServerAndTags 86let loadByUUIDAndPopulateAccountAndServerAndTags: VideoMethods.LoadByUUIDAndPopulateAccountAndServerAndTags
96let searchAndPopulateAccountAndServerAndTags: VideoMethods.SearchAndPopulateAccountAndServerAndTags 87let searchAndPopulateAccountAndServerAndTags: VideoMethods.SearchAndPopulateAccountAndServerAndTags
@@ -267,21 +258,15 @@ export default function (sequelize: Sequelize.Sequelize, DataTypes: Sequelize.Da
267 const classMethods = [ 258 const classMethods = [
268 associate, 259 associate,
269 260
270 generateThumbnailFromData,
271 list, 261 list,
272 listAllAndSharedByAccountForOutbox, 262 listAllAndSharedByAccountForOutbox,
273 listForApi, 263 listForApi,
274 listUserVideosForApi, 264 listUserVideosForApi,
275 listOwnedAndPopulateAccountAndTags,
276 listOwnedByAccount,
277 load, 265 load,
278 loadByUrlAndPopulateAccount, 266 loadByUrlAndPopulateAccount,
279 loadAndPopulateAccount,
280 loadAndPopulateAccountAndServerAndTags, 267 loadAndPopulateAccountAndServerAndTags,
281 loadByHostAndUUID,
282 loadByUUIDOrURL, 268 loadByUUIDOrURL,
283 loadByUUID, 269 loadByUUID,
284 loadLocalVideoByUUID,
285 loadByUUIDAndPopulateAccountAndServerAndTags, 270 loadByUUIDAndPopulateAccountAndServerAndTags,
286 searchAndPopulateAccountAndServerAndTags 271 searchAndPopulateAccountAndServerAndTags
287 ] 272 ]
@@ -803,16 +788,6 @@ removeTorrent = function (this: VideoInstance, videoFile: VideoFileInstance) {
803 788
804// ------------------------------ STATICS ------------------------------ 789// ------------------------------ STATICS ------------------------------
805 790
806generateThumbnailFromData = function (video: VideoInstance, thumbnailData: string) {
807 // Creating the thumbnail for a remote video
808
809 const thumbnailName = video.getThumbnailName()
810 const thumbnailPath = join(CONFIG.STORAGE.THUMBNAILS_DIR, thumbnailName)
811 return writeFilePromise(thumbnailPath, Buffer.from(thumbnailData, 'binary')).then(() => {
812 return thumbnailName
813 })
814}
815
816list = function () { 791list = function () {
817 const query = { 792 const query = {
818 include: [ Video['sequelize'].models.VideoFile ] 793 include: [ Video['sequelize'].models.VideoFile ]
@@ -970,84 +945,6 @@ listForApi = function (start: number, count: number, sort: string) {
970 }) 945 })
971} 946}
972 947
973loadByHostAndUUID = function (fromHost: string, uuid: string, t?: Sequelize.Transaction) {
974 const query: Sequelize.FindOptions<VideoAttributes> = {
975 where: {
976 uuid
977 },
978 include: [
979 {
980 model: Video['sequelize'].models.VideoFile
981 },
982 {
983 model: Video['sequelize'].models.VideoChannel,
984 include: [
985 {
986 model: Video['sequelize'].models.Account,
987 include: [
988 {
989 model: Video['sequelize'].models.Server,
990 required: true,
991 where: {
992 host: fromHost
993 }
994 }
995 ]
996 }
997 ]
998 }
999 ]
1000 }
1001
1002 if (t !== undefined) query.transaction = t
1003
1004 return Video.findOne(query)
1005}
1006
1007listOwnedAndPopulateAccountAndTags = function () {
1008 const query = {
1009 where: {
1010 remote: false
1011 },
1012 include: [
1013 Video['sequelize'].models.VideoFile,
1014 {
1015 model: Video['sequelize'].models.VideoChannel,
1016 include: [ Video['sequelize'].models.Account ]
1017 },
1018 Video['sequelize'].models.Tag
1019 ]
1020 }
1021
1022 return Video.findAll(query)
1023}
1024
1025listOwnedByAccount = function (account: string) {
1026 const query = {
1027 where: {
1028 remote: false
1029 },
1030 include: [
1031 {
1032 model: Video['sequelize'].models.VideoFile
1033 },
1034 {
1035 model: Video['sequelize'].models.VideoChannel,
1036 include: [
1037 {
1038 model: Video['sequelize'].models.Account,
1039 where: {
1040 name: account
1041 }
1042 }
1043 ]
1044 }
1045 ]
1046 }
1047
1048 return Video.findAll(query)
1049}
1050
1051load = function (id: number) { 948load = function (id: number) {
1052 return Video.findById(id) 949 return Video.findById(id)
1053} 950}
@@ -1100,34 +997,6 @@ loadByUUIDOrURL = function (uuid: string, url: string, t?: Sequelize.Transaction
1100 return Video.findOne(query) 997 return Video.findOne(query)
1101} 998}
1102 999
1103loadLocalVideoByUUID = function (uuid: string, t?: Sequelize.Transaction) {
1104 const query: Sequelize.FindOptions<VideoAttributes> = {
1105 where: {
1106 uuid,
1107 remote: false
1108 },
1109 include: [ Video['sequelize'].models.VideoFile ]
1110 }
1111
1112 if (t !== undefined) query.transaction = t
1113
1114 return Video.findOne(query)
1115}
1116
1117loadAndPopulateAccount = function (id: number) {
1118 const options = {
1119 include: [
1120 Video['sequelize'].models.VideoFile,
1121 {
1122 model: Video['sequelize'].models.VideoChannel,
1123 include: [ Video['sequelize'].models.Account ]
1124 }
1125 ]
1126 }
1127
1128 return Video.findById(id, options)
1129}
1130
1131loadAndPopulateAccountAndServerAndTags = function (id: number) { 1000loadAndPopulateAccountAndServerAndTags = function (id: number) {
1132 const options = { 1001 const options = {
1133 include: [ 1002 include: [