Add this context to instance model functions
This commit is contained in:
parent
74889a71fe
commit
70c065d64c
|
@ -4,7 +4,7 @@ import * as Sequelize from 'sequelize'
|
|||
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
|
||||
|
|
|
@ -96,12 +96,12 @@ export default function (sequelize: Sequelize.Sequelize, DataTypes: Sequelize.Da
|
|||
|
||||
// ------------------------------ 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
|
||||
}
|
||||
|
||||
|
|
|
@ -6,10 +6,10 @@ import { User as FormatedUser } from '../../../shared/models/user.model'
|
|||
|
||||
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
|
||||
|
|
|
@ -131,7 +131,7 @@ function beforeCreateOrUpdate (user: UserInstance) {
|
|||
|
||||
// ------------------------------ METHODS ------------------------------
|
||||
|
||||
isPasswordMatch = function (password: string, callback: UserMethods.IsPasswordMatchCallback) {
|
||||
isPasswordMatch = function (this: UserInstance, password: string, callback: UserMethods.IsPasswordMatchCallback) {
|
||||
return comparePassword(password, this.password, callback)
|
||||
}
|
||||
|
||||
|
@ -146,7 +146,7 @@ toFormatedJSON = function (this: UserInstance) {
|
|||
}
|
||||
}
|
||||
|
||||
isAdmin = function () {
|
||||
isAdmin = function (this: UserInstance) {
|
||||
return this.role === USER_ROLES.ADMIN
|
||||
}
|
||||
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
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'
|
||||
|
||||
|
@ -17,12 +19,15 @@ export interface VideoAbuseClass {
|
|||
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> {}
|
||||
|
|
|
@ -66,7 +66,7 @@ export default function (sequelize: Sequelize.Sequelize, DataTypes: Sequelize.Da
|
|||
|
||||
// ------------------------------ METHODS ------------------------------
|
||||
|
||||
function toFormatedJSON () {
|
||||
function toFormatedJSON (this: VideoAbuseInstance) {
|
||||
let reporterPodHost
|
||||
|
||||
if (this.Pod) {
|
||||
|
|
|
@ -4,7 +4,7 @@ import * as Sequelize from 'sequelize'
|
|||
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
|
||||
|
@ -32,6 +32,7 @@ export interface BlacklistedVideoClass {
|
|||
}
|
||||
|
||||
export interface BlacklistedVideoAttributes {
|
||||
videoId: string
|
||||
}
|
||||
|
||||
export interface BlacklistedVideoInstance extends BlacklistedVideoClass, BlacklistedVideoAttributes, Sequelize.Instance<BlacklistedVideoAttributes> {
|
||||
|
|
|
@ -49,7 +49,7 @@ export default function (sequelize: Sequelize.Sequelize, DataTypes: Sequelize.Da
|
|||
|
||||
// ------------------------------ METHODS ------------------------------
|
||||
|
||||
toFormatedJSON = function () {
|
||||
toFormatedJSON = function (this: BlacklistedVideoInstance) {
|
||||
return {
|
||||
id: this.id,
|
||||
videoId: this.videoId,
|
||||
|
|
|
@ -48,21 +48,21 @@ export type FormatedUpdateRemoteVideo = {
|
|||
}
|
||||
|
||||
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
|
||||
|
|
|
@ -247,7 +247,8 @@ export default function (sequelize: Sequelize.Sequelize, DataTypes: Sequelize.Da
|
|||
loadByHostAndRemoteId,
|
||||
loadAndPopulateAuthor,
|
||||
loadAndPopulateAuthorAndPodAndTags,
|
||||
searchAndPopulateAuthorAndPodAndTags
|
||||
searchAndPopulateAuthorAndPodAndTags,
|
||||
removeFromBlacklist
|
||||
]
|
||||
const instanceMethods = [
|
||||
generateMagnetUri,
|
||||
|
@ -260,7 +261,6 @@ export default function (sequelize: Sequelize.Sequelize, DataTypes: Sequelize.Da
|
|||
toAddRemoteJSON,
|
||||
toUpdateRemoteJSON,
|
||||
transcodeVideofile,
|
||||
removeFromBlacklist
|
||||
]
|
||||
addMethodsToModel(Video, classMethods, instanceMethods)
|
||||
|
||||
|
@ -389,7 +389,7 @@ function associate (models) {
|
|||
})
|
||||
}
|
||||
|
||||
generateMagnetUri = function () {
|
||||
generateMagnetUri = function (this: VideoInstance) {
|
||||
let baseUrlHttp
|
||||
let baseUrlWs
|
||||
|
||||
|
@ -416,18 +416,18 @@ generateMagnetUri = function () {
|
|||
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
|
||||
|
@ -435,7 +435,7 @@ getPreviewName = function () {
|
|||
return this.remoteId + extension
|
||||
}
|
||||
|
||||
getTorrentName = function () {
|
||||
getTorrentName = function (this: VideoInstance) {
|
||||
const extension = '.torrent'
|
||||
|
||||
if (this.isOwned()) return this.id + extension
|
||||
|
@ -443,7 +443,7 @@ getTorrentName = function () {
|
|||
return this.remoteId + extension
|
||||
}
|
||||
|
||||
isOwned = function () {
|
||||
isOwned = function (this: VideoInstance) {
|
||||
return this.remoteId === null
|
||||
}
|
||||
|
||||
|
@ -497,7 +497,7 @@ toFormatedJSON = function (this: VideoInstance) {
|
|||
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) => {
|
||||
|
@ -531,7 +531,7 @@ toAddRemoteJSON = function (callback: VideoMethods.ToAddRemoteJSONCallback) {
|
|||
})
|
||||
}
|
||||
|
||||
toUpdateRemoteJSON = function () {
|
||||
toUpdateRemoteJSON = function (this: VideoInstance) {
|
||||
const json = {
|
||||
name: this.name,
|
||||
category: this.category,
|
||||
|
@ -555,7 +555,7 @@ toUpdateRemoteJSON = function () {
|
|||
return json
|
||||
}
|
||||
|
||||
transcodeVideofile = function (finalCallback: VideoMethods.TranscodeVideofileCallback) {
|
||||
transcodeVideofile = function (this: VideoInstance, finalCallback: VideoMethods.TranscodeVideofileCallback) {
|
||||
const video = this
|
||||
|
||||
const videosDirectory = CONFIG.STORAGE.VIDEOS_DIR
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
export interface BlacklistedVideo {
|
||||
id: number
|
||||
videoId: number
|
||||
videoId: string
|
||||
createdAt: Date
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue