3
0
mirror of https://github.com/reality/dbot.git synced 2024-12-25 12:12:35 +01:00
dbot/modules/profile/api.js

106 lines
3.3 KiB
JavaScript
Raw Normal View History

var _ = require('underscore')._;
var api = function(dbot) {
return {
/**
* Create a new profile for a given "databanked" user.
* Typically only called as a hook to the new_user emit event.
* TODO(@samstudio8) Migrate to internalAPI
*/
"createProfile": function(user, callback){
if(user){
this.db.create('profiles', user.id, {
'id': user.id,
2013-06-13 20:59:14 +02:00
'profile': this.config.schema.profile,
'preferences': this.config.schema.preferences
}, function(err, result){
if(err){
console.log(err);
}
});
}
},
//TODO(samstudio8) Merge Profiles
'mergeProfile': function(server, nick, callback){
console.log("mergeProfile not implemented");
},
2013-01-24 00:32:50 +01:00
'getProfile': function(server, nick, callback){
dbot.api.users.resolveUser(server, nick, function(user){
if(user){
this.db.read('profiles', user.id, function(err, profile){
2013-04-21 16:27:08 +02:00
if(!err){
callback(false, user, profile);
}
else{
callback(true, user, null);
2013-04-21 16:27:08 +02:00
}
});
}
else{
callback(true, null, null);
}
}.bind(this));
2013-01-24 00:32:50 +01:00
},
'getProfileByUUID': function(uuid, callback){
if(uuid){
this.db.read('profiles', uuid, function(err, profile){
if(!err){
callback(false, uuid, profile);
}
else{
callback(true, uuid, null);
}
});
}
else{
callback(true, null, null);
}
},
'getAllProfiles': function(callback){
var profiles = [];
this.db.scan('profiles', function(profile){
profiles.push(profile);
}, function(err){
if(!err){
callback(profiles);
}
else{
console.log(err);
}
});
},
2013-01-24 00:32:50 +01:00
'setProperty': function(server, nick, field, value, callback){
this.api.getProfile(server, nick, function(err, user, profile){
if(!err){
profile.profile[field] = value;
this.db.save('profiles', user.id, profile, function(err){
if(!err){
callback("Ok!");
}
});
}
}.bind(this));
},
2013-01-24 00:32:50 +01:00
'getProperty': function(server, nick, field, callback){
this.api.getProfile(server, nick, function(err, user, profile){
if(!err){
if(profile.profile[field]){
callback(profile.profile[field]);
}
}
}.bind(this));
2013-01-24 00:32:50 +01:00
},
}
};
exports.fetch = function(dbot) {
return api(dbot);
};