+import * as Bluebird from 'bluebird'
import * as Sequelize from 'sequelize'
-import * as Promise from 'bluebird'
+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'
-import { AuthorInstance } from './author-interface'
import { TagAttributes, TagInstance } from './tag-interface'
+import { VideoChannelInstance } from './video-channel-interface'
import { VideoFileAttributes, VideoFileInstance } from './video-file-interface'
-// Don't use barrel, import just what we need
-import { Video as FormattedVideo } 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'
-
export namespace VideoMethods {
export type GetThumbnailName = (this: VideoInstance) => string
export type GetPreviewName = (this: VideoInstance) => string
export type IsOwned = (this: VideoInstance) => boolean
export type ToFormattedJSON = (this: VideoInstance) => FormattedVideo
+ export type ToFormattedDetailsJSON = (this: VideoInstance) => FormattedDetailsVideo
export type GetOriginalFile = (this: VideoInstance) => VideoFileInstance
- export type GenerateMagnetUri = (this: VideoInstance, videoFile: VideoFileInstance) => string
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 GetVideoFilePath = (this: VideoInstance, videoFile: VideoFileInstance) => string
export type CreateTorrentAndSetInfoHash = (this: VideoInstance, videoFile: VideoFileInstance) => Promise<void>
- export type ToAddRemoteJSON = (this: VideoInstance) => Promise<RemoteVideoCreateData>
- export type ToUpdateRemoteJSON = (this: VideoInstance) => RemoteVideoUpdateData
+ export type ToActivityPubObject = (this: VideoInstance) => VideoTorrentObject
export type OptimizeOriginalVideofile = (this: VideoInstance) => Promise<void>
export type TranscodeOriginalVideofile = (this: VideoInstance, resolution: number) => Promise<void>
export type GetEmbedPath = (this: VideoInstance) => string
export type GetThumbnailPath = (this: VideoInstance) => string
export type GetPreviewPath = (this: VideoInstance) => string
+ export type GetDescriptionPath = (this: VideoInstance) => string
+ export type GetTruncatedDescription = (this: VideoInstance) => string
+ 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>
- export type List = () => Promise<VideoInstance[]>
- export type ListOwnedAndPopulateAuthorAndTags = () => Promise<VideoInstance[]>
- export type ListOwnedByAuthor = (author: string) => Promise<VideoInstance[]>
+ export type List = () => Bluebird<VideoInstance[]>
+ export type ListOwnedAndPopulateAccountAndTags = () => Bluebird<VideoInstance[]>
+ export type ListOwnedByAccount = (account: string) => Bluebird<VideoInstance[]>
- export type ListForApi = (start: number, count: number, sort: string) => Promise< ResultList<VideoInstance> >
- export type SearchAndPopulateAuthorAndPodAndTags = (
+ 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 SearchAndPopulateAccountAndServerAndTags = (
value: string,
field: string,
start: number,
count: number,
sort: string
- ) => Promise< ResultList<VideoInstance> >
-
- export type Load = (id: number) => Promise<VideoInstance>
- export type LoadByUUID = (uuid: string) => Promise<VideoInstance>
- export type LoadByHostAndUUID = (fromHost: string, uuid: string) => Promise<VideoInstance>
- export type LoadAndPopulateAuthor = (id: number) => Promise<VideoInstance>
- export type LoadAndPopulateAuthorAndPodAndTags = (id: number) => Promise<VideoInstance>
- export type LoadByUUIDAndPopulateAuthorAndPodAndTags = (uuid: string) => Promise<VideoInstance>
+ ) => Bluebird< ResultList<VideoInstance> >
+
+ 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 LoadAndPopulateAccountAndServerAndTags = (id: number) => Bluebird<VideoInstance>
+ export type LoadByUUIDAndPopulateAccountAndServerAndTags = (uuid: string) => Bluebird<VideoInstance>
+ 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>
generateThumbnailFromData: VideoMethods.GenerateThumbnailFromData
list: VideoMethods.List
listForApi: VideoMethods.ListForApi
- listOwnedAndPopulateAuthorAndTags: VideoMethods.ListOwnedAndPopulateAuthorAndTags
- listOwnedByAuthor: VideoMethods.ListOwnedByAuthor
+ listUserVideosForApi: VideoMethods.ListUserVideosForApi
+ listOwnedAndPopulateAccountAndTags: VideoMethods.ListOwnedAndPopulateAccountAndTags
+ listOwnedByAccount: VideoMethods.ListOwnedByAccount
load: VideoMethods.Load
- loadAndPopulateAuthor: VideoMethods.LoadAndPopulateAuthor
- loadAndPopulateAuthorAndPodAndTags: VideoMethods.LoadAndPopulateAuthorAndPodAndTags
+ loadAndPopulateAccount: VideoMethods.LoadAndPopulateAccount
+ loadAndPopulateAccountAndServerAndTags: VideoMethods.LoadAndPopulateAccountAndServerAndTags
loadByHostAndUUID: VideoMethods.LoadByHostAndUUID
loadByUUID: VideoMethods.LoadByUUID
- loadByUUIDAndPopulateAuthorAndPodAndTags: VideoMethods.LoadByUUIDAndPopulateAuthorAndPodAndTags
- searchAndPopulateAuthorAndPodAndTags: VideoMethods.SearchAndPopulateAuthorAndPodAndTags
+ loadByUrl: VideoMethods.LoadByUrl
+ loadByUUIDOrURL: VideoMethods.LoadByUUIDOrURL
+ loadLocalVideoByUUID: VideoMethods.LoadLocalVideoByUUID
+ loadByUUIDAndPopulateAccountAndServerAndTags: VideoMethods.LoadByUUIDAndPopulateAccountAndServerAndTags
+ searchAndPopulateAccountAndServerAndTags: VideoMethods.SearchAndPopulateAccountAndServerAndTags
}
export interface VideoAttributes {
nsfw: boolean
description: string
duration: number
+ privacy: number
views?: number
likes?: number
dislikes?: number
remote: boolean
+ url?: string
- Author?: AuthorInstance
+ createdAt?: Date
+ updatedAt?: Date
+
+ parentId?: number
+ channelId?: number
+
+ VideoChannel?: VideoChannelInstance
Tags?: TagInstance[]
VideoFiles?: VideoFileInstance[]
}
export interface VideoInstance extends VideoClass, VideoAttributes, Sequelize.Instance<VideoAttributes> {
- createdAt: Date
- updatedAt: Date
-
createPreview: VideoMethods.CreatePreview
createThumbnail: VideoMethods.CreateThumbnail
createTorrentAndSetInfoHash: VideoMethods.CreateTorrentAndSetInfoHash
getOriginalFile: VideoMethods.GetOriginalFile
- generateMagnetUri: VideoMethods.GenerateMagnetUri
getPreviewName: VideoMethods.GetPreviewName
getPreviewPath: VideoMethods.GetPreviewPath
getThumbnailName: VideoMethods.GetThumbnailName
removePreview: VideoMethods.RemovePreview
removeThumbnail: VideoMethods.RemoveThumbnail
removeTorrent: VideoMethods.RemoveTorrent
- toAddRemoteJSON: VideoMethods.ToAddRemoteJSON
+ toActivityPubObject: VideoMethods.ToActivityPubObject
toFormattedJSON: VideoMethods.ToFormattedJSON
- toUpdateRemoteJSON: VideoMethods.ToUpdateRemoteJSON
+ toFormattedDetailsJSON: VideoMethods.ToFormattedDetailsJSON
optimizeOriginalVideofile: VideoMethods.OptimizeOriginalVideofile
transcodeOriginalVideofile: VideoMethods.TranscodeOriginalVideofile
getOriginalFileHeight: VideoMethods.GetOriginalFileHeight
getEmbedPath: VideoMethods.GetEmbedPath
+ getDescriptionPath: VideoMethods.GetDescriptionPath
+ getTruncatedDescription: VideoMethods.GetTruncatedDescription
+ getCategoryLabel: VideoMethods.GetCategoryLabel
+ getLicenceLabel: VideoMethods.GetLicenceLabel
+ getLanguageLabel: VideoMethods.GetLanguageLabel
setTags: Sequelize.HasManySetAssociationsMixin<TagAttributes, string>
addVideoFile: Sequelize.HasManyAddAssociationMixin<VideoFileAttributes, string>