1
0
Fork 0
peertube/server/models/video/video-interface.ts

163 lines
7.9 KiB
TypeScript
Raw Normal View History

2017-05-22 14:58:25 -04:00
import * as Sequelize from 'sequelize'
2017-11-09 11:51:58 -05:00
import * as Bluebird from 'bluebird'
2017-05-22 14:58:25 -04:00
import { TagAttributes, TagInstance } from './tag-interface'
import { VideoFileAttributes, VideoFileInstance } from './video-file-interface'
2017-06-10 16:15:25 -04:00
// Don't use barrel, import just what we need
2017-10-24 13:41:09 -04:00
import {
Video as FormattedVideo,
VideoDetails as FormattedDetailsVideo
} from '../../../shared/models/videos/video.model'
import { RemoteVideoUpdateData } from '../../../shared/models/pods/remote-video/remote-video-update-request.model'
import { RemoteVideoCreateData } from '../../../shared/models/pods/remote-video/remote-video-create-request.model'
import { ResultList } from '../../../shared/models/result-list.model'
2017-10-24 13:41:09 -04:00
import { VideoChannelInstance } from './video-channel-interface'
2017-11-09 11:51:58 -05:00
import { VideoTorrentObject } from '../../../shared/models/activitypub/objects/video-torrent-object'
2017-06-10 16:15:25 -04:00
2017-05-22 14:58:25 -04:00
export namespace VideoMethods {
export type GetThumbnailName = (this: VideoInstance) => string
export type GetPreviewName = (this: VideoInstance) => string
export type IsOwned = (this: VideoInstance) => boolean
2017-08-25 05:45:31 -04:00
export type ToFormattedJSON = (this: VideoInstance) => FormattedVideo
2017-10-24 13:41:09 -04:00
export type ToFormattedDetailsJSON = (this: VideoInstance) => FormattedDetailsVideo
2017-06-10 16:15:25 -04:00
export type GetOriginalFile = (this: VideoInstance) => VideoFileInstance
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 11:51:58 -05:00
export type ToActivityPubObject = (this: VideoInstance) => VideoTorrentObject
2017-06-10 16:15:25 -04: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 04:05:49 -04:00
export type GetEmbedPath = (this: VideoInstance) => string
export type GetThumbnailPath = (this: VideoInstance) => string
export type GetPreviewPath = (this: VideoInstance) => string
2017-10-30 05:16:27 -04:00
export type GetDescriptionPath = (this: VideoInstance) => string
export type GetTruncatedDescription = (this: VideoInstance) => string
2017-11-09 11:51:58 -05:00
export type GetCategoryLabel = (this: VideoInstance) => string
export type GetLicenceLabel = (this: VideoInstance) => string
export type GetLanguageLabel = (this: VideoInstance) => string
// Return thumbnail name
export type GenerateThumbnailFromData = (video: VideoInstance, thumbnailData: string) => Promise<string>
2017-11-09 11:51:58 -05:00
export type List = () => Bluebird<VideoInstance[]>
export type ListOwnedAndPopulateAccountAndTags = () => Bluebird<VideoInstance[]>
export type ListOwnedByAccount = (account: string) => Bluebird<VideoInstance[]>
2017-11-09 11:51:58 -05: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> >
export type SearchAndPopulateAccountAndPodAndTags = (
value: string,
field: string,
start: number,
count: number,
sort: string
2017-11-09 11:51:58 -05:00
) => Bluebird< ResultList<VideoInstance> >
2017-11-09 11:51:58 -05:00
export type Load = (id: number) => Bluebird<VideoInstance>
export type LoadByUUID = (uuid: string, t?: Sequelize.Transaction) => Bluebird<VideoInstance>
export type LoadByUrl = (url: string, t?: Sequelize.Transaction) => Bluebird<VideoInstance>
export type LoadLocalVideoByUUID = (uuid: string, t?: Sequelize.Transaction) => Bluebird<VideoInstance>
export type LoadByHostAndUUID = (fromHost: string, uuid: string, t?: Sequelize.Transaction) => Bluebird<VideoInstance>
export type LoadAndPopulateAccount = (id: number) => Bluebird<VideoInstance>
export type LoadAndPopulateAccountAndPodAndTags = (id: number) => Bluebird<VideoInstance>
export type LoadByUUIDAndPopulateAccountAndPodAndTags = (uuid: string) => Bluebird<VideoInstance>
2017-11-10 08:34:45 -05:00
export type LoadByUUIDOrURL = (uuid: string, url: string, t?: Sequelize.Transaction) => Bluebird<VideoInstance>
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 14:58:25 -04:00
}
export interface VideoClass {
generateThumbnailFromData: VideoMethods.GenerateThumbnailFromData
list: VideoMethods.List
listForApi: VideoMethods.ListForApi
2017-10-31 06:52:52 -04:00
listUserVideosForApi: VideoMethods.ListUserVideosForApi
2017-11-09 11:51:58 -05:00
listOwnedAndPopulateAccountAndTags: VideoMethods.ListOwnedAndPopulateAccountAndTags
listOwnedByAccount: VideoMethods.ListOwnedByAccount
2017-05-22 14:58:25 -04:00
load: VideoMethods.Load
2017-11-09 11:51:58 -05:00
loadAndPopulateAccount: VideoMethods.LoadAndPopulateAccount
loadAndPopulateAccountAndPodAndTags: VideoMethods.LoadAndPopulateAccountAndPodAndTags
loadByHostAndUUID: VideoMethods.LoadByHostAndUUID
loadByUUID: VideoMethods.LoadByUUID
2017-11-09 11:51:58 -05:00
loadByUrl: VideoMethods.LoadByUrl
2017-11-10 08:34:45 -05:00
loadByUUIDOrURL: VideoMethods.LoadByUUIDOrURL
loadLocalVideoByUUID: VideoMethods.LoadLocalVideoByUUID
2017-11-09 11:51:58 -05:00
loadByUUIDAndPopulateAccountAndPodAndTags: VideoMethods.LoadByUUIDAndPopulateAccountAndPodAndTags
searchAndPopulateAccountAndPodAndTags: VideoMethods.SearchAndPopulateAccountAndPodAndTags
2017-05-22 14:58:25 -04:00
}
export interface VideoAttributes {
2017-08-25 12:36:49 -04:00
id?: number
uuid?: string
2017-05-22 14:58:25 -04:00
name: string
category: number
licence: number
language: number
nsfw: boolean
description: string
duration: number
2017-10-31 06:52:52 -04:00
privacy: number
2017-05-22 14:58:25 -04:00
views?: number
likes?: number
dislikes?: number
remote: boolean
2017-11-10 08:34:45 -05:00
url?: string
createdAt?: Date
updatedAt?: Date
2017-06-10 16:15:25 -04:00
2017-11-09 11:51:58 -05:00
parentId?: number
2017-10-24 13:41:09 -04:00
channelId?: number
VideoChannel?: VideoChannelInstance
Tags?: TagInstance[]
VideoFiles?: VideoFileInstance[]
2017-05-22 14:58:25 -04:00
}
export interface VideoInstance extends VideoClass, VideoAttributes, Sequelize.Instance<VideoAttributes> {
createPreview: VideoMethods.CreatePreview
createThumbnail: VideoMethods.CreateThumbnail
createTorrentAndSetInfoHash: VideoMethods.CreateTorrentAndSetInfoHash
getOriginalFile: VideoMethods.GetOriginalFile
2017-06-17 05:28:11 -04:00
getPreviewName: VideoMethods.GetPreviewName
2017-10-16 04:05:49 -04:00
getPreviewPath: VideoMethods.GetPreviewPath
getThumbnailName: VideoMethods.GetThumbnailName
2017-10-16 04:05:49 -04:00
getThumbnailPath: VideoMethods.GetThumbnailPath
getTorrentFileName: VideoMethods.GetTorrentFileName
getVideoFilename: VideoMethods.GetVideoFilename
getVideoFilePath: VideoMethods.GetVideoFilePath
2017-06-17 05:28:11 -04:00
isOwned: VideoMethods.IsOwned
removeFile: VideoMethods.RemoveFile
removePreview: VideoMethods.RemovePreview
removeThumbnail: VideoMethods.RemoveThumbnail
removeTorrent: VideoMethods.RemoveTorrent
2017-11-09 11:51:58 -05:00
toActivityPubObject: VideoMethods.ToActivityPubObject
2017-08-25 05:45:31 -04:00
toFormattedJSON: VideoMethods.ToFormattedJSON
2017-10-24 13:41:09 -04:00
toFormattedDetailsJSON: VideoMethods.ToFormattedDetailsJSON
optimizeOriginalVideofile: VideoMethods.OptimizeOriginalVideofile
transcodeOriginalVideofile: VideoMethods.TranscodeOriginalVideofile
getOriginalFileHeight: VideoMethods.GetOriginalFileHeight
2017-10-16 04:05:49 -04:00
getEmbedPath: VideoMethods.GetEmbedPath
2017-10-30 05:16:27 -04:00
getDescriptionPath: VideoMethods.GetDescriptionPath
getTruncatedDescription: VideoMethods.GetTruncatedDescription
2017-11-09 11:51:58 -05:00
getCategoryLabel: VideoMethods.GetCategoryLabel
getLicenceLabel: VideoMethods.GetLicenceLabel
getLanguageLabel: VideoMethods.GetLanguageLabel
setTags: Sequelize.HasManySetAssociationsMixin<TagAttributes, string>
addVideoFile: Sequelize.HasManyAddAssociationMixin<VideoFileAttributes, string>
setVideoFiles: Sequelize.HasManySetAssociationsMixin<VideoFileAttributes, string>
2017-05-22 14:58:25 -04:00
}
export interface VideoModel extends VideoClass, Sequelize.Model<VideoInstance, VideoAttributes> {}