2017-11-09 10:51:58 -06:00
|
|
|
import * as Bluebird from 'bluebird'
|
2017-11-13 10:39:41 -06:00
|
|
|
import * as Sequelize from 'sequelize'
|
|
|
|
import { VideoTorrentObject } from '../../../shared/models/activitypub/objects/video-torrent-object'
|
|
|
|
import { ResultList } from '../../../shared/models/result-list.model'
|
|
|
|
import { Video as FormattedVideo, VideoDetails as FormattedDetailsVideo } from '../../../shared/models/videos/video.model'
|
2017-11-23 10:36:15 -06:00
|
|
|
import { AccountVideoRateInstance } from '../account/account-video-rate-interface'
|
2017-05-22 13:58:25 -05:00
|
|
|
|
2017-07-05 06:26:25 -05:00
|
|
|
import { TagAttributes, TagInstance } from './tag-interface'
|
2017-10-24 12:41:09 -05:00
|
|
|
import { VideoChannelInstance } from './video-channel-interface'
|
2017-11-13 10:39:41 -06:00
|
|
|
import { VideoFileAttributes, VideoFileInstance } from './video-file-interface'
|
2017-11-21 11:23:10 -06:00
|
|
|
import { VideoShareInstance } from './video-share-interface'
|
2017-06-10 15:15:25 -05:00
|
|
|
|
2017-05-22 13:58:25 -05:00
|
|
|
export namespace VideoMethods {
|
2017-06-16 02:54:59 -05:00
|
|
|
export type GetThumbnailName = (this: VideoInstance) => string
|
|
|
|
export type GetPreviewName = (this: VideoInstance) => string
|
|
|
|
export type IsOwned = (this: VideoInstance) => boolean
|
2017-08-25 04:45:31 -05:00
|
|
|
export type ToFormattedJSON = (this: VideoInstance) => FormattedVideo
|
2017-10-24 12:41:09 -05:00
|
|
|
export type ToFormattedDetailsJSON = (this: VideoInstance) => FormattedDetailsVideo
|
2017-06-10 15:15:25 -05:00
|
|
|
|
2017-10-02 05:20:26 -05:00
|
|
|
export type GetOriginalFile = (this: VideoInstance) => VideoFileInstance
|
2017-08-25 04:36:23 -05:00
|
|
|
export type GetTorrentFileName = (this: VideoInstance, videoFile: VideoFileInstance) => string
|
|
|
|
export type GetVideoFilename = (this: VideoInstance, videoFile: VideoFileInstance) => string
|
|
|
|
export type CreatePreview = (this: VideoInstance, videoFile: VideoFileInstance) => Promise<string>
|
|
|
|
export type CreateThumbnail = (this: VideoInstance, videoFile: VideoFileInstance) => Promise<string>
|
|
|
|
export type GetVideoFilePath = (this: VideoInstance, videoFile: VideoFileInstance) => string
|
|
|
|
export type CreateTorrentAndSetInfoHash = (this: VideoInstance, videoFile: VideoFileInstance) => Promise<void>
|
|
|
|
|
2017-11-09 10:51:58 -06:00
|
|
|
export type ToActivityPubObject = (this: VideoInstance) => VideoTorrentObject
|
2017-06-10 15:15:25 -05:00
|
|
|
|
2017-10-02 05:20:26 -05:00
|
|
|
export type OptimizeOriginalVideofile = (this: VideoInstance) => Promise<void>
|
|
|
|
export type TranscodeOriginalVideofile = (this: VideoInstance, resolution: number) => Promise<void>
|
|
|
|
export type GetOriginalFileHeight = (this: VideoInstance) => Promise<number>
|
2017-10-16 03:05:49 -05:00
|
|
|
export type GetEmbedPath = (this: VideoInstance) => string
|
|
|
|
export type GetThumbnailPath = (this: VideoInstance) => string
|
|
|
|
export type GetPreviewPath = (this: VideoInstance) => string
|
2017-10-30 04:16:27 -05:00
|
|
|
export type GetDescriptionPath = (this: VideoInstance) => string
|
|
|
|
export type GetTruncatedDescription = (this: VideoInstance) => string
|
2017-11-09 10:51:58 -06:00
|
|
|
export type GetCategoryLabel = (this: VideoInstance) => string
|
|
|
|
export type GetLicenceLabel = (this: VideoInstance) => string
|
|
|
|
export type GetLanguageLabel = (this: VideoInstance) => string
|
2017-07-05 06:26:25 -05:00
|
|
|
|
2017-11-09 10:51:58 -06:00
|
|
|
export type List = () => Bluebird<VideoInstance[]>
|
2017-07-05 06:26:25 -05:00
|
|
|
|
2017-11-21 11:23:10 -06:00
|
|
|
export type ListAllAndSharedByAccountForOutbox = (
|
|
|
|
accountId: number,
|
|
|
|
start: number,
|
|
|
|
count: number
|
|
|
|
) => Bluebird< ResultList<VideoInstance> >
|
2017-11-09 10:51:58 -06:00
|
|
|
export type ListForApi = (start: number, count: number, sort: string) => Bluebird< ResultList<VideoInstance> >
|
|
|
|
export type ListUserVideosForApi = (userId: number, start: number, count: number, sort: string) => Bluebird< ResultList<VideoInstance> >
|
2017-11-15 04:00:25 -06:00
|
|
|
export type SearchAndPopulateAccountAndServerAndTags = (
|
2017-07-05 06:26:25 -05:00
|
|
|
value: string,
|
|
|
|
start: number,
|
|
|
|
count: number,
|
|
|
|
sort: string
|
2017-11-09 10:51:58 -06:00
|
|
|
) => Bluebird< ResultList<VideoInstance> >
|
2017-07-05 06:26:25 -05:00
|
|
|
|
2017-11-09 10:51:58 -06:00
|
|
|
export type Load = (id: number) => Bluebird<VideoInstance>
|
|
|
|
export type LoadByUUID = (uuid: string, t?: Sequelize.Transaction) => Bluebird<VideoInstance>
|
2017-11-16 08:55:01 -06:00
|
|
|
export type LoadByUrlAndPopulateAccount = (url: string, t?: Sequelize.Transaction) => Bluebird<VideoInstance>
|
2017-11-15 04:00:25 -06:00
|
|
|
export type LoadAndPopulateAccountAndServerAndTags = (id: number) => Bluebird<VideoInstance>
|
|
|
|
export type LoadByUUIDAndPopulateAccountAndServerAndTags = (uuid: string) => Bluebird<VideoInstance>
|
2017-11-10 07:34:45 -06:00
|
|
|
export type LoadByUUIDOrURL = (uuid: string, url: string, t?: Sequelize.Transaction) => Bluebird<VideoInstance>
|
2017-08-25 04:36:23 -05:00
|
|
|
|
|
|
|
export type RemoveThumbnail = (this: VideoInstance) => Promise<void>
|
|
|
|
export type RemovePreview = (this: VideoInstance) => Promise<void>
|
|
|
|
export type RemoveFile = (this: VideoInstance, videoFile: VideoFileInstance) => Promise<void>
|
|
|
|
export type RemoveTorrent = (this: VideoInstance, videoFile: VideoFileInstance) => Promise<void>
|
2017-05-22 13:58:25 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
export interface VideoClass {
|
|
|
|
list: VideoMethods.List
|
2017-11-21 11:23:10 -06:00
|
|
|
listAllAndSharedByAccountForOutbox: VideoMethods.ListAllAndSharedByAccountForOutbox
|
2017-05-22 13:58:25 -05:00
|
|
|
listForApi: VideoMethods.ListForApi
|
2017-10-31 05:52:52 -05:00
|
|
|
listUserVideosForApi: VideoMethods.ListUserVideosForApi
|
2017-05-22 13:58:25 -05:00
|
|
|
load: VideoMethods.Load
|
2017-11-15 04:00:25 -06:00
|
|
|
loadAndPopulateAccountAndServerAndTags: VideoMethods.LoadAndPopulateAccountAndServerAndTags
|
2017-08-25 04:36:23 -05:00
|
|
|
loadByUUID: VideoMethods.LoadByUUID
|
2017-11-16 08:55:01 -06:00
|
|
|
loadByUrlAndPopulateAccount: VideoMethods.LoadByUrlAndPopulateAccount
|
2017-11-10 07:34:45 -06:00
|
|
|
loadByUUIDOrURL: VideoMethods.LoadByUUIDOrURL
|
2017-11-15 04:00:25 -06:00
|
|
|
loadByUUIDAndPopulateAccountAndServerAndTags: VideoMethods.LoadByUUIDAndPopulateAccountAndServerAndTags
|
|
|
|
searchAndPopulateAccountAndServerAndTags: VideoMethods.SearchAndPopulateAccountAndServerAndTags
|
2017-05-22 13:58:25 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
export interface VideoAttributes {
|
2017-08-25 11:36:49 -05:00
|
|
|
id?: number
|
2017-07-11 09:01:56 -05:00
|
|
|
uuid?: string
|
2017-05-22 13:58:25 -05:00
|
|
|
name: string
|
|
|
|
category: number
|
|
|
|
licence: number
|
|
|
|
language: number
|
|
|
|
nsfw: boolean
|
|
|
|
description: string
|
|
|
|
duration: number
|
2017-10-31 05:52:52 -05:00
|
|
|
privacy: number
|
2017-05-22 13:58:25 -05:00
|
|
|
views?: number
|
|
|
|
likes?: number
|
|
|
|
dislikes?: number
|
2017-07-11 09:01:56 -05:00
|
|
|
remote: boolean
|
2017-11-10 07:34:45 -06:00
|
|
|
url?: string
|
|
|
|
|
|
|
|
createdAt?: Date
|
|
|
|
updatedAt?: Date
|
2017-06-10 15:15:25 -05:00
|
|
|
|
2017-11-09 10:51:58 -06:00
|
|
|
parentId?: number
|
2017-10-24 12:41:09 -05:00
|
|
|
channelId?: number
|
|
|
|
|
|
|
|
VideoChannel?: VideoChannelInstance
|
2017-07-05 06:26:25 -05:00
|
|
|
Tags?: TagInstance[]
|
2017-08-25 04:36:23 -05:00
|
|
|
VideoFiles?: VideoFileInstance[]
|
2017-11-22 09:25:03 -06:00
|
|
|
VideoShares?: VideoShareInstance[]
|
2017-11-23 09:55:13 -06:00
|
|
|
AccountVideoRates?: AccountVideoRateInstance[]
|
2017-05-22 13:58:25 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
export interface VideoInstance extends VideoClass, VideoAttributes, Sequelize.Instance<VideoAttributes> {
|
2017-08-25 04:36:23 -05:00
|
|
|
createPreview: VideoMethods.CreatePreview
|
|
|
|
createThumbnail: VideoMethods.CreateThumbnail
|
|
|
|
createTorrentAndSetInfoHash: VideoMethods.CreateTorrentAndSetInfoHash
|
2017-10-02 05:20:26 -05:00
|
|
|
getOriginalFile: VideoMethods.GetOriginalFile
|
2017-06-17 04:28:11 -05:00
|
|
|
getPreviewName: VideoMethods.GetPreviewName
|
2017-10-16 03:05:49 -05:00
|
|
|
getPreviewPath: VideoMethods.GetPreviewPath
|
2017-08-25 04:36:23 -05:00
|
|
|
getThumbnailName: VideoMethods.GetThumbnailName
|
2017-10-16 03:05:49 -05:00
|
|
|
getThumbnailPath: VideoMethods.GetThumbnailPath
|
2017-08-25 04:36:23 -05:00
|
|
|
getTorrentFileName: VideoMethods.GetTorrentFileName
|
|
|
|
getVideoFilename: VideoMethods.GetVideoFilename
|
|
|
|
getVideoFilePath: VideoMethods.GetVideoFilePath
|
2017-06-17 04:28:11 -05:00
|
|
|
isOwned: VideoMethods.IsOwned
|
2017-08-25 04:36:23 -05:00
|
|
|
removeFile: VideoMethods.RemoveFile
|
|
|
|
removePreview: VideoMethods.RemovePreview
|
|
|
|
removeThumbnail: VideoMethods.RemoveThumbnail
|
|
|
|
removeTorrent: VideoMethods.RemoveTorrent
|
2017-11-09 10:51:58 -06:00
|
|
|
toActivityPubObject: VideoMethods.ToActivityPubObject
|
2017-08-25 04:45:31 -05:00
|
|
|
toFormattedJSON: VideoMethods.ToFormattedJSON
|
2017-10-24 12:41:09 -05:00
|
|
|
toFormattedDetailsJSON: VideoMethods.ToFormattedDetailsJSON
|
2017-10-02 05:20:26 -05:00
|
|
|
optimizeOriginalVideofile: VideoMethods.OptimizeOriginalVideofile
|
|
|
|
transcodeOriginalVideofile: VideoMethods.TranscodeOriginalVideofile
|
|
|
|
getOriginalFileHeight: VideoMethods.GetOriginalFileHeight
|
2017-10-16 03:05:49 -05:00
|
|
|
getEmbedPath: VideoMethods.GetEmbedPath
|
2017-10-30 04:16:27 -05:00
|
|
|
getDescriptionPath: VideoMethods.GetDescriptionPath
|
2017-10-30 14:26:06 -05:00
|
|
|
getTruncatedDescription: VideoMethods.GetTruncatedDescription
|
2017-11-09 10:51:58 -06:00
|
|
|
getCategoryLabel: VideoMethods.GetCategoryLabel
|
|
|
|
getLicenceLabel: VideoMethods.GetLicenceLabel
|
|
|
|
getLanguageLabel: VideoMethods.GetLanguageLabel
|
2017-07-05 06:26:25 -05:00
|
|
|
|
|
|
|
setTags: Sequelize.HasManySetAssociationsMixin<TagAttributes, string>
|
2017-10-02 05:20:26 -05:00
|
|
|
addVideoFile: Sequelize.HasManyAddAssociationMixin<VideoFileAttributes, string>
|
2017-08-25 04:36:23 -05:00
|
|
|
setVideoFiles: Sequelize.HasManySetAssociationsMixin<VideoFileAttributes, string>
|
2017-05-22 13:58:25 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
export interface VideoModel extends VideoClass, Sequelize.Model<VideoInstance, VideoAttributes> {}
|