]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blob - models/pods.js
395b1e0b12056a1c27a345890c5030479a5e462b
[github/Chocobozzz/PeerTube.git] / models / pods.js
1 ;(function () {
2 'use strict'
3
4 var mongoose = require('mongoose')
5
6 var constants = require('../initializers/constants')
7 var logger = require('../helpers/logger')
8
9 // ---------------------------------------------------------------------------
10
11 var podsSchema = mongoose.Schema({
12 url: String,
13 publicKey: String,
14 score: { type: Number, max: constants.FRIEND_BASE_SCORE }
15 })
16 var PodsDB = mongoose.model('pods', podsSchema)
17
18 // ---------------------------------------------------------------------------
19
20 var Pods = {
21 add: add,
22 count: count,
23 findByUrl: findByUrl,
24 findBadPods: findBadPods,
25 incrementScores: incrementScores,
26 list: list,
27 remove: remove,
28 removeAll: removeAll,
29 removeAllByIds: removeAllByIds
30 }
31
32 // TODO: check if the pod is not already a friend
33 function add (data, callback) {
34 if (!callback) callback = function () {}
35 var params = {
36 url: data.url,
37 publicKey: data.publicKey,
38 score: constants.FRIEND_BASE_SCORE
39 }
40
41 PodsDB.create(params, callback)
42 }
43
44 function count (callback) {
45 return PodsDB.count(callback)
46 }
47
48 function findBadPods (callback) {
49 PodsDB.find({ score: 0 }, callback)
50 }
51
52 function findByUrl (url, callback) {
53 PodsDB.findOne({ url: url }, callback)
54 }
55
56 function incrementScores (ids, value, callback) {
57 if (!callback) callback = function () {}
58 PodsDB.update({ _id: { $in: ids } }, { $inc: { score: value } }, { multi: true }, callback)
59 }
60
61 function list (callback) {
62 PodsDB.find(function (err, pods_list) {
63 if (err) {
64 logger.error('Cannot get the list of the pods.', { error: err })
65 return callback(err)
66 }
67
68 return callback(null, pods_list)
69 })
70 }
71
72 function remove (url, callback) {
73 if (!callback) callback = function () {}
74 PodsDB.remove({ url: url }, callback)
75 }
76
77 function removeAll (callback) {
78 if (!callback) callback = function () {}
79 PodsDB.remove(callback)
80 }
81
82 function removeAllByIds (ids, callback) {
83 if (!callback) callback = function () {}
84 PodsDB.remove({ _id: { $in: ids } }, callback)
85 }
86
87 // ---------------------------------------------------------------------------
88
89 module.exports = Pods
90 })()