module.factory('Resource', ['$resource', function($resource) {
return function(url, params, methods) {
/**
* The resource method helps setup a resource endpoint using AngularJS' $resource service.
*
* @returns $resource
*/
this.resource = function() {
var defaults = {
update: {method: 'put', isArray: false},
create: {method: 'post'}
};
methods = _.extend(defaults, methods);
var resource = $resource(url, params, methods);
resource.prototype.$save = function(data, callback) {
if (!this.id) {
this.$create(data, callback);
}
else {
this.$update(data, callback);
}
};
resource.lower = function() {
return this.name.toLowerCase();
};
resource.lowerPlural = function() {
return this.lower().pluralize();
};
return resource;
};
/**
* Specifies the name (in lower case) of the resource.
*
* @type {null}
*/
this.name = null;
};
}]);