Merge branch 'feature/private_bins' of github.com:remy/jsbin into feature/private_bins

Conflicts:
	lib/models/bin.js
This commit is contained in:
Remy Sharp 2014-01-16 12:32:49 +00:00
commit c7b2e6156f
6 changed files with 21 additions and 35 deletions

View File

@ -448,15 +448,6 @@ module.exports = utils.inherit(Object, {
}
});
},
getVisibility: function(bin, fn) {
var sql = templates.getVisibility;
this.connection.query(sql, [bin.url, bin.revision], function(err, result) {
if (err) {
return fn(err);
}
fn(null, result[0] ? result[0].visibility : false);
});
},
getBinMetadata: function(bin, fn) {
var sql = templates.getBinMetadata;
this.connection.query(sql, [bin.url, bin.revision], function(err, result) {
@ -469,13 +460,16 @@ module.exports = utils.inherit(Object, {
});
});
},
setBinVisibility: function(bin, value, fn) {
setBinVisibility: function(bin, name, value, fn) {
var sql = templates.setBinVisibility, params = [
value, bin.metadata.name, bin.url
value, name, bin.url
];
if (!bin.metadata || bin.metadata.name !== name) {
return fn(301);
}
this.connection.query(sql, params, function(err, result) {
if (err) {
return fn(err);
return fn(500);
}
fn(err, result);
});

View File

@ -34,7 +34,6 @@
"reportBin": "UPDATE `sandbox` SET `reported`=? WHERE `url`=? AND `revision`=? AND `active`='y'",
"isOwnerOf": "SELECT name=? as `owner` FROM `owners` WHERE `url`=? AND `revision`=1",
"getUserBinCount": "SELECT COUNT(*) as total FROM `owners` WHERE `name`=?",
"getVisibility": "SELECT * FROM `owners` WHERE `url`=? AND `revision`=?",
"setBinVisibility": "UPDATE `owners` SET `visibility`=? WHERE `name`=? AND `url`=?",
"getBinMetadata": "SELECT * FROM `owners` AS `o`, `ownership` AS `os` WHERE o.name=os.name AND o.url=? AND o.revision=?",
"setProAccount": "UPDATE ownership SET `pro`=?, `updated`=? WHERE `name`=?"

View File

@ -520,15 +520,6 @@ module.exports = utils.inherit(Object, {
}
});
},
getVisibility: function(bin, fn) {
var sql = templates.getVisibility;
this.connection.get(sql, [bin.url, bin.revision], function(err, result) {
if (err) {
return fn(err);
}
fn(null, result[0] ? result[0].visibility : false);
});
},
getBinMetadata: function(bin, fn) {
var sql = templates.getBinMetadata;
this.connection.get(sql, [bin.url, bin.revision], function(err, result) {
@ -541,13 +532,16 @@ module.exports = utils.inherit(Object, {
});
});
},
setBinVisibility: function(bin, value, fn) {
setBinVisibility: function(bin, name, value, fn) {
var sql = templates.setBinVisibility, params = [
value, bin.metadata.name, bin.url
];
if (bin.metadata.name !== name) {
return fn(301)
}
this.connection.run(sql, params, function(err, result) {
if (err) {
return fn(err);
return fn(500);
}
fn(err, result);
});

View File

@ -362,17 +362,20 @@ module.exports = Observable.extend({
if (!req.session.user || !req.session.user.pro) {
return res.send(301);
}
this.models.bin.setBinVisibility(req.bin, 'private', function(err, bin){
this.models.bin.setBinVisibility(req.bin, req.session.name, 'private', function(err, bin){
if (err) {
res.send(500);
res.send(err);
}
res.send(200, 'OK');
});
},
setBinAsPublic: function(req, res, next) {
this.models.bin.setBinVisibility(req.bin, 'public', function(err, bin){
if (!req.session.user || !req.session.user.pro) {
return res.send(301);
}
this.models.bin.setBinVisibility(req.bin, req.session.name, 'public', function(err, bin){
if (err) {
res.send(500);
res.send(err);
}
res.send(200, 'OK');
});

View File

@ -69,14 +69,11 @@ var model = {
report: function (params, fn) {
this.store.reportBin(params, fn);
},
getVisibility: function(bin, fn) {
this.store.getVisibility(bin, fn);
},
getBinMetadata: function(bin, fn) {
this.store.getBinMetadata(bin, fn);
},
setBinVisibility: function(bin, value, fn) {
this.store.setBinVisibility(bin, value, fn);
setBinVisibility: function(bin, name, value, fn) {
this.store.setBinVisibility(bin, name, value, fn);
}
};
@ -104,4 +101,4 @@ Object.keys(model).forEach(function (key) {
};
});
module.exports = Observable.extend(model);
module.exports = Observable.extend(model);

View File

@ -47,7 +47,6 @@ var methods = [
'getUserBinCount',
'populateOwners',
'getOne',
'getVisibility',
'getBinMetadata',
'setBinVisibility',
'setProAccount'