X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=server%2Fmodels%2Fvideo%2Fvideo-interface.ts;h=dd457bb00620ff476573fc74a1b707ba50c22605;hb=51c443dbe0284c5ec54033be06f554ec37397bce;hp=fb31c6a8fdc4cc261b26c2d070cb98d8ff85851d;hpb=556ddc319242aafef51bae9301423ecf8701a3af;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/models/video/video-interface.ts b/server/models/video/video-interface.ts index fb31c6a8f..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 FormattedVideo } 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 FormattedRemoteVideoFile = { - infoHash: string - resolution: number - extname: string - size: number -} - -export type FormattedAddRemoteVideo = { - 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: FormattedRemoteVideoFile[] -} - -export type FormattedUpdateRemoteVideo = { - 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: FormattedRemoteVideoFile[] -} +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 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) => FormattedUpdateRemoteVideo + 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 @@ -135,7 +98,9 @@ export interface VideoAttributes { dislikes?: number remote: boolean - Author?: AuthorInstance + channelId?: number + + VideoChannel?: VideoChannelInstance Tags?: TagInstance[] VideoFiles?: VideoFileInstance[] } @@ -147,9 +112,11 @@ export interface VideoInstance extends VideoClass, VideoAttributes, Sequelize.In 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 @@ -160,10 +127,15 @@ export interface VideoInstance extends VideoClass, VideoAttributes, Sequelize.In removeTorrent: VideoMethods.RemoveTorrent toAddRemoteJSON: VideoMethods.ToAddRemoteJSON 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 }