From e02643f32e4c97ca307f8fc5b69be79c40d70a3b Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Mon, 22 May 2017 20:58:25 +0200 Subject: Type models --- server/models/request-video-qadu.ts | 68 ++++++++++++++++++++++--------------- 1 file changed, 41 insertions(+), 27 deletions(-) (limited to 'server/models/request-video-qadu.ts') diff --git a/server/models/request-video-qadu.ts b/server/models/request-video-qadu.ts index 2b1ed07c9..e914e06cd 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 { REQUEST_VIDEO_QADU_TYPES } from '../initializers' -// --------------------------------------------------------------------------- +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 -module.exports = function (sequelize, DataTypes) { - const RequestVideoQadu = sequelize.define('RequestVideoQadu', +export default function (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,14 +83,13 @@ function associate (models) { }) } -function countTotalRequests (callback) { +countTotalRequests = function (callback) { 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, limitRequestsPerPod, callback) { + const Pod = RequestVideoQadu['sequelize'].models.Pod Pod.listRandomPodIdsWithRequest(limitPods, 'RequestVideoQadus', function (err, podIds) { if (err) return callback(err) @@ -86,7 +100,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 +108,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 +122,7 @@ function listWithLimitAndRandom (limitPods, limitRequestsPerPod, callback) { }) } -function removeByRequestIdsAndPod (ids, podId, callback) { +removeByRequestIdsAndPod = function (ids, podId, callback) { const query = { where: { id: { @@ -118,12 +132,12 @@ function removeByRequestIdsAndPod (ids, podId, callback) { } } - this.destroy(query).asCallback(callback) + RequestVideoQadu.destroy(query).asCallback(callback) } -function removeAll (callback) { +removeAll = function (callback) { // Delete all requests - this.truncate({ cascade: true }).asCallback(callback) + RequestVideoQadu.truncate({ cascade: true }).asCallback(callback) } // --------------------------------------------------------------------------- -- cgit v1.2.3