Backuppush

This commit is contained in:
KasperRT
2015-04-09 13:52:53 +02:00
parent a8a705bd77
commit 67eaaddb44
5 changed files with 247 additions and 296 deletions

View File

@@ -6,7 +6,7 @@ var io = require('socket.io')(server);
//db
var mongojs = require('mongojs');
var db = mongojs.connect('mydb', ['kasper']);
var db = mongojs.connect('mydb');
var port = 3000;
var lists = [];
@@ -20,7 +20,7 @@ io.on('connection', function(socket){
var coll;
var guid;
socket.on('list', function(list)
{
list = list.split(',');
@@ -28,31 +28,124 @@ io.on('connection', function(socket){
guid = list[1];
console.log("user connected to list: " + list[0]);
if(lists[list[0]] == undefined)
if(lists[coll] == undefined)
{
lists[list[0]] = [];
lists[list[0]].push(socket);
}else lists[list[0]].push(socket);
console.log(lists[list[0]].length);
lists[coll] = [];
lists[coll].push(guid);
}else lists[coll].push(guid);
db.collection(coll).find({views:{$exists : true}}, function(err, docs){
if(!contains(docs[0]["views"], guid))
io.sockets.emit(coll+",viewers", lists[coll].length);
db.getCollectionNames(function(err, docs){
if(contains(docs, coll))
{
db.collection(coll).update({views:{$exists : true}}, {$push:{views:guid}}, function(err, docs){
db.collection(list[0]).find().sort({added:-1}, function(err, docs) {
console.log(docs);
socket.emit(list[1], docs);
});
});
db.collection(coll).find().sort({votes:-1}, function(err, docs) {
console.log(docs);
socket.emit(coll, docs);
db.collection(coll).find({now_playing:true}, function(err, np){
console.log("sending now_playing to " + coll+",np");
db.collection(coll).find({views:{$exists:true}}, function(err, conf){
var d = new Date();
var time = Math.floor(d.getTime() / 1000);
toSend = [np,conf,time];
console.log(toSend);
socket.emit(coll+",np", toSend);
});
});
});
}else
{
db.collection(list[0]).find().sort({added:-1}, function(err, docs) {
console.log(docs);
socket.emit(list[1], docs);
});
db.createCollection(coll, function(err, docs){
var d = new Date();
var time = Math.floor(d.getTime() / 1000);
db.collection(coll).insert({"added":time,"guids":[],"id":"30H2Z8Lr-4c","now_playing":true,"title":"Empty Playlist","votes":0}, function(err, docs){
db.collection(coll).insert({"addsongs":false, "adminpass":"", "allvideos":true, "frontpage":true, "longsongs":true, "removeplay": false, "shuffle": false, "skip": true, "skips": [], "startTime":time, "views": [], "vote": false}, function(err, docs)
{
socket.emit(coll, docs);
})
});
})
}
});
});
});
socket.on('end', function(arg)
{
db.collection(coll).find({now_playing:true}, function(err, docs){
if(docs[0]["id"]== arg){
db.collection(coll).update({now_playing:true},
{$set:{
now_playing:false,
votes:0,
guids:[]
}}, function(err, docs)
{
db.collection(coll).findAndModify({
query: {now_playing:false, id: {$ne: arg}},
sort: {votes:-1},
update:
{$set:{
now_playing:true,
votes:0,
guids:[]
}}
}, function(err, docs)
{
var d = new Date();
var time = Math.floor(d.getTime() / 1000);
db.collection(coll).update({views:{$exists:true}},
{$set:{startTime:time}}, function(err, docs){
db.collection(coll).find().sort({votes:-1}, function(err, docs)
{
io.sockets.emit(coll, docs);
db.collection(coll).find({now_playing:true}, function(err, np){
console.log("sending now_playing to " + coll+",np");
db.collection(coll).find({views:{$exists:true}}, function(err, conf){
var d = new Date();
var time = Math.floor(d.getTime() / 1000);
toSend = [np,conf,time];
console.log(toSend);
io.sockets.emit(coll+",np", toSend);
});
});
});
});
});
});
}
})
});
socket.on('add', function(arr)
{
console.log("add songs");
var id = arr[0];
var title = arr[1];
db.collection(coll).find({id:id}, function(err, docs){
if(docs.length < 1)
{
var d = new Date();
var time = Math.floor(d.getTime() / 1000);
var guids = [guid];
var votes = 1;
db.collection(coll).find({id:"30H2Z8Lr-4c"}, function(err, docs){
if(docs.length == 0){
db.collection(coll).insert({"added":time,"guids":guids,"id":id,"now_playing":false,"title":title,"votes":votes}, function(err, docs){
db.collection(coll).find().sort({votes:-1}, function(err, docs){
io.sockets.emit(coll, docs);
});
});
}else{
db.collection(coll).update({id:"30H2Z8Lr-4c"},
{"added":time,"guids":guids,"id":id,"now_playing":false,"title":title,"votes":votes}, function(err, docs){
db.collection(coll).find().sort({votes:-1}, function(err, docs){
io.sockets.emit(coll, docs);
});
});
}
});
}
});
});
socket.on('vote', function(msg)
@@ -61,8 +154,9 @@ io.on('connection', function(socket){
var id = msg[1];
guid = msg[3];
db.collection(coll).find({id:id}, function(err, docs){
if(contains(docs[0]["guids"], guid))
if(!contains(docs[0]["guids"], guid))
{
db.collection(coll).update({id:id}, {$inc:{votes:1}}, function(err, docs)
{
@@ -80,10 +174,11 @@ io.on('connection', function(socket){
db.collection(coll).find().sort({votes:-1}, function(err, docs)
{
console.log(docs);
for(x in lists[coll])
io.sockets.emit(coll, docs);
/*for(x in lists[coll])
{
lists[coll][x].emit(coll, docs);
}
}*/
});
});
}
@@ -91,17 +186,65 @@ io.on('connection', function(socket){
});
socket.on('pos', function()
{
});
socket.on('skip', function(list)
{
console.log("skip on list: " + list);
var coll = list[0].toLowerCase();
db.collection(coll).find({skip: "true"}, function(err, docs){
db.collection(coll).find({skip: true}, function(err, docs){
if(docs.length == 1)
{
if(docs[0]["views"].length/2 <= docs[0]["skips"]+1)
console.log(lists[coll]);
if(lists[coll].length/2 <= docs[0]["skips"]+1)
{
//aggregationfunction to update now playing and the next boolean values
//Also flush skips array so its length = 0
db.collection(coll).update({now_playing:true},
{$set:{
now_playing:false,
votes:0,
guids:[]
}}, function(err, docs)
{
db.collection(coll).findAndModify({
query: {now_playing:false},
sort: {votes:-1},
update:
{$set:{
now_playing:true,
votes:0,
guids:[]
}}
}, function(err, docs)
{
var d = new Date();
var time = Math.floor(d.getTime() / 1000);
db.collection(coll).update({views:{$exists:true}},
{$set:{startTime:time}}, function(err, docs){
db.collection(coll).find().sort({votes:-1}, function(err, docs)
{
io.sockets.emit(coll, docs);
db.collection(coll).find({now_playing:true}, function(err, np){
console.log("sending now_playing to " + coll+",np");
db.collection(coll).find({views:{$exists:true}}, function(err, conf){
var d = new Date();
var time = Math.floor(d.getTime() / 1000);
toSend = [np,conf,time];
console.log(toSend);
io.sockets.emit(coll+",np", toSend);
});
});
});
});
});
});
}else{
db.collection(coll).update({views:{$exists:true}}, {$push:{guids:guid}}, function(err, coll){
//reply with skips or something
console.log("skipped without effect");
});
}
}
});
@@ -111,15 +254,14 @@ io.on('connection', function(socket){
{
try
{
var index = lists[coll].indexOf(socket);
var index = lists[coll].indexOf(guid);
lists.splice(index, 1);
io.sockets.emit(coll+",viewers", lists[coll].length);
}catch(err){}
/*db.collection(coll).update({guids: guid},{$pull: {guids: guid}}, {multi: true}, function(err, docs)
{});
db.collection(coll).update({skips: guid},{$pull: {skips: guid}}, {multi: true}, function(err, docs)
{});*/
db.collection(coll).update({views: guid},{$pull: {views: guid}}, {multi: true}, function(err, docs)
{});
});
});