aboutsummaryrefslogtreecommitdiffhomepage
path: root/server/models/request-video-qadu.ts
diff options
context:
space:
mode:
Diffstat (limited to 'server/models/request-video-qadu.ts')
-rw-r--r--server/models/request-video-qadu.ts68
1 files changed, 41 insertions, 27 deletions
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 @@
10*/ 10*/
11 11
12import { values } from 'lodash' 12import { values } from 'lodash'
13import * as Sequelize from 'sequelize'
13 14
14import { REQUEST_VIDEO_QADU_TYPES } from '../initializers' 15import { REQUEST_VIDEO_QADU_TYPES } from '../initializers'
15 16
16// --------------------------------------------------------------------------- 17import { addMethodsToModel } from './utils'
18import {
19 RequestVideoQaduClass,
20 RequestVideoQaduInstance,
21 RequestVideoQaduAttributes,
22
23 RequestVideoQaduMethods
24} from './request-video-qadu-interface'
25
26let RequestVideoQadu: Sequelize.Model<RequestVideoQaduInstance, RequestVideoQaduAttributes>
27let countTotalRequests: RequestVideoQaduMethods.CountTotalRequests
28let listWithLimitAndRandom: RequestVideoQaduMethods.ListWithLimitAndRandom
29let removeByRequestIdsAndPod: RequestVideoQaduMethods.RemoveByRequestIdsAndPod
30let removeAll: RequestVideoQaduMethods.RemoveAll
17 31
18module.exports = function (sequelize, DataTypes) { 32export default function (sequelize, DataTypes) {
19 const RequestVideoQadu = sequelize.define('RequestVideoQadu', 33 RequestVideoQadu = sequelize.define('RequestVideoQadu',
20 { 34 {
21 type: { 35 type: {
22 type: DataTypes.ENUM(values(REQUEST_VIDEO_QADU_TYPES)), 36 type: DataTypes.ENUM(values(REQUEST_VIDEO_QADU_TYPES)),
@@ -32,26 +46,27 @@ module.exports = function (sequelize, DataTypes) {
32 { 46 {
33 fields: [ 'videoId' ] 47 fields: [ 'videoId' ]
34 } 48 }
35 ], 49 ]
36 classMethods: {
37 associate,
38
39 listWithLimitAndRandom,
40
41 countTotalRequests,
42 removeAll,
43 removeByRequestIdsAndPod
44 }
45 } 50 }
46 ) 51 )
47 52
53 const classMethods = [
54 associate,
55
56 listWithLimitAndRandom,
57 countTotalRequests,
58 removeAll,
59 removeByRequestIdsAndPod
60 ]
61 addMethodsToModel(RequestVideoQadu, classMethods)
62
48 return RequestVideoQadu 63 return RequestVideoQadu
49} 64}
50 65
51// ------------------------------ STATICS ------------------------------ 66// ------------------------------ STATICS ------------------------------
52 67
53function associate (models) { 68function associate (models) {
54 this.belongsTo(models.Pod, { 69 RequestVideoQadu.belongsTo(models.Pod, {
55 foreignKey: { 70 foreignKey: {
56 name: 'podId', 71 name: 'podId',
57 allowNull: false 72 allowNull: false
@@ -59,7 +74,7 @@ function associate (models) {
59 onDelete: 'CASCADE' 74 onDelete: 'CASCADE'
60 }) 75 })
61 76
62 this.belongsTo(models.Video, { 77 RequestVideoQadu.belongsTo(models.Video, {
63 foreignKey: { 78 foreignKey: {
64 name: 'videoId', 79 name: 'videoId',
65 allowNull: false 80 allowNull: false
@@ -68,14 +83,13 @@ function associate (models) {
68 }) 83 })
69} 84}
70 85
71function countTotalRequests (callback) { 86countTotalRequests = function (callback) {
72 const query = {} 87 const query = {}
73 return this.count(query).asCallback(callback) 88 return RequestVideoQadu.count(query).asCallback(callback)
74} 89}
75 90
76function listWithLimitAndRandom (limitPods, limitRequestsPerPod, callback) { 91listWithLimitAndRandom = function (limitPods, limitRequestsPerPod, callback) {
77 const self = this 92 const Pod = RequestVideoQadu['sequelize'].models.Pod
78 const Pod = this.sequelize.models.Pod
79 93
80 Pod.listRandomPodIdsWithRequest(limitPods, 'RequestVideoQadus', function (err, podIds) { 94 Pod.listRandomPodIdsWithRequest(limitPods, 'RequestVideoQadus', function (err, podIds) {
81 if (err) return callback(err) 95 if (err) return callback(err)
@@ -86,7 +100,7 @@ function listWithLimitAndRandom (limitPods, limitRequestsPerPod, callback) {
86 const query = { 100 const query = {
87 include: [ 101 include: [
88 { 102 {
89 model: self.sequelize.models.Pod, 103 model: RequestVideoQadu['sequelize'].models.Pod,
90 where: { 104 where: {
91 id: { 105 id: {
92 $in: podIds 106 $in: podIds
@@ -94,12 +108,12 @@ function listWithLimitAndRandom (limitPods, limitRequestsPerPod, callback) {
94 } 108 }
95 }, 109 },
96 { 110 {
97 model: self.sequelize.models.Video 111 model: RequestVideoQadu['sequelize'].models.Video
98 } 112 }
99 ] 113 ]
100 } 114 }
101 115
102 self.findAll(query).asCallback(function (err, requests) { 116 RequestVideoQadu.findAll(query).asCallback(function (err, requests) {
103 if (err) return callback(err) 117 if (err) return callback(err)
104 118
105 const requestsGrouped = groupAndTruncateRequests(requests, limitRequestsPerPod) 119 const requestsGrouped = groupAndTruncateRequests(requests, limitRequestsPerPod)
@@ -108,7 +122,7 @@ function listWithLimitAndRandom (limitPods, limitRequestsPerPod, callback) {
108 }) 122 })
109} 123}
110 124
111function removeByRequestIdsAndPod (ids, podId, callback) { 125removeByRequestIdsAndPod = function (ids, podId, callback) {
112 const query = { 126 const query = {
113 where: { 127 where: {
114 id: { 128 id: {
@@ -118,12 +132,12 @@ function removeByRequestIdsAndPod (ids, podId, callback) {
118 } 132 }
119 } 133 }
120 134
121 this.destroy(query).asCallback(callback) 135 RequestVideoQadu.destroy(query).asCallback(callback)
122} 136}
123 137
124function removeAll (callback) { 138removeAll = function (callback) {
125 // Delete all requests 139 // Delete all requests
126 this.truncate({ cascade: true }).asCallback(callback) 140 RequestVideoQadu.truncate({ cascade: true }).asCallback(callback)
127} 141}
128 142
129// --------------------------------------------------------------------------- 143// ---------------------------------------------------------------------------