X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=server%2Fmodels%2Frequest-video-qadu.ts;h=27ce0ff29ced0a0f620140b6921ef13944f8ffc9;hb=127944aacb52721877449a1f202dc0add866ef39;hp=2b1ed07c9eb3a24820d2beeae078aa7abe6413d3;hpb=65fcc3119c334b75dd13bcfdebf186afdc580a8f;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/models/request-video-qadu.ts b/server/models/request-video-qadu.ts index 2b1ed07c9..27ce0ff29 100644 --- a/server/models/request-video-qadu.ts +++ b/server/models/request-video-qadu.ts @@ -10,13 +10,27 @@ */ import { values } from 'lodash' +import * as Sequelize from 'sequelize' +import { database as db } from '../initializers/database' import { REQUEST_VIDEO_QADU_TYPES } from '../initializers' - -// --------------------------------------------------------------------------- - -module.exports = function (sequelize, DataTypes) { - const RequestVideoQadu = sequelize.define('RequestVideoQadu', +import { addMethodsToModel } from './utils' +import { + RequestVideoQaduClass, + RequestVideoQaduInstance, + RequestVideoQaduAttributes, + + RequestVideoQaduMethods +} from './request-video-qadu-interface' + +let RequestVideoQadu: Sequelize.Model +let countTotalRequests: RequestVideoQaduMethods.CountTotalRequests +let listWithLimitAndRandom: RequestVideoQaduMethods.ListWithLimitAndRandom +let removeByRequestIdsAndPod: RequestVideoQaduMethods.RemoveByRequestIdsAndPod +let removeAll: RequestVideoQaduMethods.RemoveAll + +export default function (sequelize: Sequelize.Sequelize, DataTypes: Sequelize.DataTypes) { + RequestVideoQadu = sequelize.define('RequestVideoQadu', { type: { type: DataTypes.ENUM(values(REQUEST_VIDEO_QADU_TYPES)), @@ -32,26 +46,27 @@ module.exports = function (sequelize, DataTypes) { { fields: [ 'videoId' ] } - ], - classMethods: { - associate, - - listWithLimitAndRandom, - - countTotalRequests, - removeAll, - removeByRequestIdsAndPod - } + ] } ) + const classMethods = [ + associate, + + listWithLimitAndRandom, + countTotalRequests, + removeAll, + removeByRequestIdsAndPod + ] + addMethodsToModel(RequestVideoQadu, classMethods) + return RequestVideoQadu } // ------------------------------ STATICS ------------------------------ function associate (models) { - this.belongsTo(models.Pod, { + RequestVideoQadu.belongsTo(models.Pod, { foreignKey: { name: 'podId', allowNull: false @@ -59,7 +74,7 @@ function associate (models) { onDelete: 'CASCADE' }) - this.belongsTo(models.Video, { + RequestVideoQadu.belongsTo(models.Video, { foreignKey: { name: 'videoId', allowNull: false @@ -68,16 +83,16 @@ function associate (models) { }) } -function countTotalRequests (callback) { +countTotalRequests = function (callback: RequestVideoQaduMethods.CountTotalRequestsCallback) { const query = {} - return this.count(query).asCallback(callback) + return RequestVideoQadu.count(query).asCallback(callback) } -function listWithLimitAndRandom (limitPods, limitRequestsPerPod, callback) { - const self = this - const Pod = this.sequelize.models.Pod +listWithLimitAndRandom = function (limitPods: number, limitRequestsPerPod: number, callback: RequestVideoQaduMethods.ListWithLimitAndRandomCallback) { + const Pod = db.Pod + const tableJoin = '' - Pod.listRandomPodIdsWithRequest(limitPods, 'RequestVideoQadus', function (err, podIds) { + Pod.listRandomPodIdsWithRequest(limitPods, 'RequestVideoQadus', tableJoin, function (err, podIds) { if (err) return callback(err) // We don't have friends that have requests @@ -86,7 +101,7 @@ function listWithLimitAndRandom (limitPods, limitRequestsPerPod, callback) { const query = { include: [ { - model: self.sequelize.models.Pod, + model: RequestVideoQadu['sequelize'].models.Pod, where: { id: { $in: podIds @@ -94,12 +109,12 @@ function listWithLimitAndRandom (limitPods, limitRequestsPerPod, callback) { } }, { - model: self.sequelize.models.Video + model: RequestVideoQadu['sequelize'].models.Video } ] } - self.findAll(query).asCallback(function (err, requests) { + RequestVideoQadu.findAll(query).asCallback(function (err, requests) { if (err) return callback(err) const requestsGrouped = groupAndTruncateRequests(requests, limitRequestsPerPod) @@ -108,7 +123,7 @@ function listWithLimitAndRandom (limitPods, limitRequestsPerPod, callback) { }) } -function removeByRequestIdsAndPod (ids, podId, callback) { +removeByRequestIdsAndPod = function (ids: number[], podId: number, callback: RequestVideoQaduMethods.RemoveByRequestIdsAndPodCallback) { const query = { where: { id: { @@ -118,17 +133,17 @@ function removeByRequestIdsAndPod (ids, podId, callback) { } } - this.destroy(query).asCallback(callback) + RequestVideoQadu.destroy(query).asCallback(callback) } -function removeAll (callback) { +removeAll = function (callback: RequestVideoQaduMethods.RemoveAllCallback) { // Delete all requests - this.truncate({ cascade: true }).asCallback(callback) + RequestVideoQadu.truncate({ cascade: true }).asCallback(callback) } // --------------------------------------------------------------------------- -function groupAndTruncateRequests (requests, limitRequestsPerPod) { +function groupAndTruncateRequests (requests: RequestVideoQaduInstance[], limitRequestsPerPod: number) { const requestsGrouped = {} requests.forEach(function (request) {