import { Pod as FormatedPod } from '../../../shared/models/pod.model'
export namespace PodMethods {
- export type ToFormatedJSON = () => FormatedPod
+ export type ToFormatedJSON = (this: PodInstance) => FormatedPod
export type CountAllCallback = (err: Error, total: number) => void
export type CountAll = (callback) => void
// ------------------------------ METHODS ------------------------------
-toFormatedJSON = function () {
+toFormatedJSON = function (this: PodInstance) {
const json = {
id: this.id,
host: this.host,
email: this.email,
- score: this.score,
+ score: this.score as number,
createdAt: this.createdAt
}
export namespace UserMethods {
export type IsPasswordMatchCallback = (err: Error, same: boolean) => void
- export type IsPasswordMatch = (password: string, callback: IsPasswordMatchCallback) => void
+ export type IsPasswordMatch = (this: UserInstance, password: string, callback: IsPasswordMatchCallback) => void
- export type ToFormatedJSON = () => FormatedUser
- export type IsAdmin = () => boolean
+ export type ToFormatedJSON = (this: UserInstance) => FormatedUser
+ export type IsAdmin = (this: UserInstance) => boolean
export type CountTotalCallback = (err: Error, total: number) => void
export type CountTotal = (callback: CountTotalCallback) => void
// ------------------------------ METHODS ------------------------------
-isPasswordMatch = function (password: string, callback: UserMethods.IsPasswordMatchCallback) {
+isPasswordMatch = function (this: UserInstance, password: string, callback: UserMethods.IsPasswordMatchCallback) {
return comparePassword(password, this.password, callback)
}
}
}
-isAdmin = function () {
+isAdmin = function (this: UserInstance) {
return this.role === USER_ROLES.ADMIN
}
import * as Sequelize from 'sequelize'
+import { PodInstance } from '../pod'
+
// Don't use barrel, import just what we need
import { VideoAbuse as FormatedVideoAbuse } from '../../../shared/models/video-abuse.model'
export interface VideoAbuseAttributes {
reporterUsername: string
reason: string
+ videoId: string
}
export interface VideoAbuseInstance extends VideoAbuseClass, VideoAbuseAttributes, Sequelize.Instance<VideoAbuseAttributes> {
id: number
createdAt: Date
updatedAt: Date
+
+ Pod: PodInstance
}
export interface VideoAbuseModel extends VideoAbuseClass, Sequelize.Model<VideoAbuseInstance, VideoAbuseAttributes> {}
// ------------------------------ METHODS ------------------------------
-function toFormatedJSON () {
+function toFormatedJSON (this: VideoAbuseInstance) {
let reporterPodHost
if (this.Pod) {
import { BlacklistedVideo as FormatedBlacklistedVideo } from '../../../shared/models/video-blacklist.model'
export namespace BlacklistedVideoMethods {
- export type ToFormatedJSON = () => FormatedBlacklistedVideo
+ export type ToFormatedJSON = (this: BlacklistedVideoInstance) => FormatedBlacklistedVideo
export type CountTotalCallback = (err: Error, total: number) => void
export type CountTotal = (callback: CountTotalCallback) => void
}
export interface BlacklistedVideoAttributes {
+ videoId: string
}
export interface BlacklistedVideoInstance extends BlacklistedVideoClass, BlacklistedVideoAttributes, Sequelize.Instance<BlacklistedVideoAttributes> {
// ------------------------------ METHODS ------------------------------
-toFormatedJSON = function () {
+toFormatedJSON = function (this: BlacklistedVideoInstance) {
return {
id: this.id,
videoId: this.videoId,
}
export namespace VideoMethods {
- export type GenerateMagnetUri = () => string
- export type GetVideoFilename = () => string
- export type GetThumbnailName = () => string
- export type GetPreviewName = () => string
- export type GetTorrentName = () => string
- export type IsOwned = () => boolean
- export type ToFormatedJSON = () => FormatedVideo
+ export type GenerateMagnetUri = (this: VideoInstance) => string
+ export type GetVideoFilename = (this: VideoInstance) => string
+ export type GetThumbnailName = (this: VideoInstance) => string
+ export type GetPreviewName = (this: VideoInstance) => string
+ export type GetTorrentName = (this: VideoInstance) => string
+ export type IsOwned = (this: VideoInstance) => boolean
+ export type ToFormatedJSON = (this: VideoInstance) => FormatedVideo
export type ToAddRemoteJSONCallback = (err: Error, videoFormated?: FormatedAddRemoteVideo) => void
- export type ToAddRemoteJSON = (callback: ToAddRemoteJSONCallback) => void
+ export type ToAddRemoteJSON = (this: VideoInstance, callback: ToAddRemoteJSONCallback) => void
- export type ToUpdateRemoteJSON = () => FormatedUpdateRemoteVideo
+ export type ToUpdateRemoteJSON = (this: VideoInstance) => FormatedUpdateRemoteVideo
export type TranscodeVideofileCallback = (err: Error) => void
- export type TranscodeVideofile = (callback: TranscodeVideofileCallback) => void
+ export type TranscodeVideofile = (this: VideoInstance, callback: TranscodeVideofileCallback) => void
export type GenerateThumbnailFromDataCallback = (err: Error, thumbnailName?: string) => void
export type GenerateThumbnailFromData = (video: VideoInstance, thumbnailData: string, callback: GenerateThumbnailFromDataCallback) => void
loadByHostAndRemoteId,
loadAndPopulateAuthor,
loadAndPopulateAuthorAndPodAndTags,
- searchAndPopulateAuthorAndPodAndTags
+ searchAndPopulateAuthorAndPodAndTags,
+ removeFromBlacklist
]
const instanceMethods = [
generateMagnetUri,
toAddRemoteJSON,
toUpdateRemoteJSON,
transcodeVideofile,
- removeFromBlacklist
]
addMethodsToModel(Video, classMethods, instanceMethods)
})
}
-generateMagnetUri = function () {
+generateMagnetUri = function (this: VideoInstance) {
let baseUrlHttp
let baseUrlWs
return magnetUtil.encode(magnetHash)
}
-getVideoFilename = function () {
+getVideoFilename = function (this: VideoInstance) {
if (this.isOwned()) return this.id + this.extname
return this.remoteId + this.extname
}
-getThumbnailName = function () {
+getThumbnailName = function (this: VideoInstance) {
// We always have a copy of the thumbnail
return this.id + '.jpg'
}
-getPreviewName = function () {
+getPreviewName = function (this: VideoInstance) {
const extension = '.jpg'
if (this.isOwned()) return this.id + extension
return this.remoteId + extension
}
-getTorrentName = function () {
+getTorrentName = function (this: VideoInstance) {
const extension = '.torrent'
if (this.isOwned()) return this.id + extension
return this.remoteId + extension
}
-isOwned = function () {
+isOwned = function (this: VideoInstance) {
return this.remoteId === null
}
return json
}
-toAddRemoteJSON = function (callback: VideoMethods.ToAddRemoteJSONCallback) {
+toAddRemoteJSON = function (this: VideoInstance, callback: VideoMethods.ToAddRemoteJSONCallback) {
// Get thumbnail data to send to the other pod
const thumbnailPath = join(CONFIG.STORAGE.THUMBNAILS_DIR, this.getThumbnailName())
fs.readFile(thumbnailPath, (err, thumbnailData) => {
})
}
-toUpdateRemoteJSON = function () {
+toUpdateRemoteJSON = function (this: VideoInstance) {
const json = {
name: this.name,
category: this.category,
return json
}
-transcodeVideofile = function (finalCallback: VideoMethods.TranscodeVideofileCallback) {
+transcodeVideofile = function (this: VideoInstance, finalCallback: VideoMethods.TranscodeVideofileCallback) {
const video = this
const videosDirectory = CONFIG.STORAGE.VIDEOS_DIR
export interface BlacklistedVideo {
id: number
- videoId: number
+ videoId: string
createdAt: Date
}