X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=server%2Fmodels%2Fvideo%2Fvideo-interface.ts;h=dd457bb00620ff476573fc74a1b707ba50c22605;hb=51c443dbe0284c5ec54033be06f554ec37397bce;hp=976c70b5e3660e7a6b3cf7e81082e630c2d6422a;hpb=93e1258c7cbc0d1235ca6d2a1f7c1875985328b8;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/models/video/video-interface.ts b/server/models/video/video-interface.ts index 976c70b5e..dd457bb00 100644 --- a/server/models/video/video-interface.ts +++ b/server/models/video/video-interface.ts @@ -1,67 +1,27 @@ import * as Sequelize from 'sequelize' import * as Promise from 'bluebird' -import { AuthorInstance } from './author-interface' import { TagAttributes, TagInstance } from './tag-interface' import { VideoFileAttributes, VideoFileInstance } from './video-file-interface' // Don't use barrel, import just what we need -import { Video as FormatedVideo } from '../../../shared/models/videos/video.model' +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' - -export type FormatedRemoteVideoFile = { - infoHash: string - resolution: number - extname: string - size: number -} - -export type FormatedAddRemoteVideo = { - uuid: string - name: string - category: number - licence: number - language: number - nsfw: boolean - description: string - author: string - duration: number - thumbnailData: string - tags: string[] - createdAt: Date - updatedAt: Date - views: number - likes: number - dislikes: number - files: FormatedRemoteVideoFile[] -} - -export type FormatedUpdateRemoteVideo = { - uuid: string - name: string - category: number - licence: number - language: number - nsfw: boolean - description: string - author: string - duration: number - tags: string[] - createdAt: Date - updatedAt: Date - views: number - likes: number - dislikes: number - files: FormatedRemoteVideoFile[] -} +import { VideoChannelInstance } from './video-channel-interface' export namespace VideoMethods { export type GetThumbnailName = (this: VideoInstance) => string export type GetPreviewName = (this: VideoInstance) => string export type IsOwned = (this: VideoInstance) => boolean - export type ToFormatedJSON = (this: VideoInstance) => FormatedVideo + export type ToFormattedJSON = (this: VideoInstance) => FormattedVideo + export type ToFormattedDetailsJSON = (this: VideoInstance) => FormattedDetailsVideo - export type GenerateMagnetUri = (this: VideoInstance, videoFile: VideoFileInstance) => string + 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 @@ -69,14 +29,18 @@ export namespace VideoMethods { export type GetVideoFilePath = (this: VideoInstance, videoFile: VideoFileInstance) => string export type CreateTorrentAndSetInfoHash = (this: VideoInstance, videoFile: VideoFileInstance) => Promise - export type ToAddRemoteJSON = (this: VideoInstance) => Promise - export type ToUpdateRemoteJSON = (this: VideoInstance) => FormatedUpdateRemoteVideo + export type ToAddRemoteJSON = (this: VideoInstance) => Promise + export type ToUpdateRemoteJSON = (this: VideoInstance) => RemoteVideoUpdateData - export type TranscodeVideofile = (this: VideoInstance, inputVideoFile: VideoFileInstance) => Promise + export type OptimizeOriginalVideofile = (this: VideoInstance) => Promise + export type TranscodeOriginalVideofile = (this: VideoInstance, resolution: number) => Promise + export type GetOriginalFileHeight = (this: VideoInstance) => Promise + export type GetEmbedPath = (this: VideoInstance) => string + export type GetThumbnailPath = (this: VideoInstance) => string + export type GetPreviewPath = (this: VideoInstance) => string // Return thumbnail name export type GenerateThumbnailFromData = (video: VideoInstance, thumbnailData: string) => Promise - export type GetDurationFromFile = (videoPath: string) => Promise export type List = () => Promise export type ListOwnedAndPopulateAuthorAndTags = () => Promise @@ -92,8 +56,8 @@ export namespace VideoMethods { ) => Promise< ResultList > export type Load = (id: number) => Promise - export type LoadByUUID = (uuid: string) => Promise - export type LoadByHostAndUUID = (fromHost: string, uuid: string) => Promise + export type LoadByUUID = (uuid: string, t?: Sequelize.Transaction) => Promise + export type LoadByHostAndUUID = (fromHost: string, uuid: string, t?: Sequelize.Transaction) => Promise export type LoadAndPopulateAuthor = (id: number) => Promise export type LoadAndPopulateAuthorAndPodAndTags = (id: number) => Promise export type LoadByUUIDAndPopulateAuthorAndPodAndTags = (uuid: string) => Promise @@ -106,7 +70,6 @@ export namespace VideoMethods { export interface VideoClass { generateThumbnailFromData: VideoMethods.GenerateThumbnailFromData - getDurationFromFile: VideoMethods.GetDurationFromFile list: VideoMethods.List listForApi: VideoMethods.ListForApi listOwnedAndPopulateAuthorAndTags: VideoMethods.ListOwnedAndPopulateAuthorAndTags @@ -121,6 +84,7 @@ export interface VideoClass { } export interface VideoAttributes { + id?: number uuid?: string name: string category: number @@ -134,22 +98,25 @@ export interface VideoAttributes { dislikes?: number remote: boolean - Author?: AuthorInstance + channelId?: number + + VideoChannel?: VideoChannelInstance Tags?: TagInstance[] VideoFiles?: VideoFileInstance[] } export interface VideoInstance extends VideoClass, VideoAttributes, Sequelize.Instance { - id: number createdAt: Date updatedAt: Date createPreview: VideoMethods.CreatePreview createThumbnail: VideoMethods.CreateThumbnail createTorrentAndSetInfoHash: VideoMethods.CreateTorrentAndSetInfoHash - generateMagnetUri: VideoMethods.GenerateMagnetUri + getOriginalFile: VideoMethods.GetOriginalFile getPreviewName: VideoMethods.GetPreviewName + getPreviewPath: VideoMethods.GetPreviewPath getThumbnailName: VideoMethods.GetThumbnailName + getThumbnailPath: VideoMethods.GetThumbnailPath getTorrentFileName: VideoMethods.GetTorrentFileName getVideoFilename: VideoMethods.GetVideoFilename getVideoFilePath: VideoMethods.GetVideoFilePath @@ -159,11 +126,16 @@ export interface VideoInstance extends VideoClass, VideoAttributes, Sequelize.In removeThumbnail: VideoMethods.RemoveThumbnail removeTorrent: VideoMethods.RemoveTorrent toAddRemoteJSON: VideoMethods.ToAddRemoteJSON - toFormatedJSON: VideoMethods.ToFormatedJSON + toFormattedJSON: VideoMethods.ToFormattedJSON + toFormattedDetailsJSON: VideoMethods.ToFormattedDetailsJSON toUpdateRemoteJSON: VideoMethods.ToUpdateRemoteJSON - transcodeVideofile: VideoMethods.TranscodeVideofile + optimizeOriginalVideofile: VideoMethods.OptimizeOriginalVideofile + transcodeOriginalVideofile: VideoMethods.TranscodeOriginalVideofile + getOriginalFileHeight: VideoMethods.GetOriginalFileHeight + getEmbedPath: VideoMethods.GetEmbedPath setTags: Sequelize.HasManySetAssociationsMixin + addVideoFile: Sequelize.HasManyAddAssociationMixin setVideoFiles: Sequelize.HasManySetAssociationsMixin }