From 50b203651144a670e37bc220c13a6d32bee8778d Mon Sep 17 00:00:00 2001
From: Ritchie Martori <skawful@gmail.com>
Date: Fri, 24 May 2013 15:10:34 -0700
Subject: [PATCH] Update remoting signatures for dao.

---
 lib/dao.js        | 25 +++++++++++--------------
 lib/datasource.js |  6 +++++-
 2 files changed, 16 insertions(+), 15 deletions(-)

diff --git a/lib/dao.js b/lib/dao.js
index 2ac8793f..7d202449 100644
--- a/lib/dao.js
+++ b/lib/dao.js
@@ -267,6 +267,15 @@ DataAccessObject.find = function find(id, cb) {
     }.bind(this));
 };
 
+// find ~ remoting attributes
+DataAccessObject.find.accepts = [
+  {arg: 'id', type: 'number'}
+];
+DataAccessObject.find.shared = true;
+DataAccessObject.find.http = [
+  {verb: 'get', path: '/:id'}
+];
+
 /**
  * Find all instances of Model, matched by query
  * make sure you have marked as `index: true` fields for filter or sort
@@ -341,18 +350,6 @@ DataAccessObject.findOne = function findOne(params, cb) {
     });
 };
 
-// findOne ~ remoting attributes
-DataAccessObject.findOne.accepts = [
-  {arg: 'id', type: 'number', optional: true},
-  {arg: 'filter', type: 'object', optional: true}
-];
-DataAccessObject.findOne.shared = true;
-DataAccessObject.findOne.http = [
-  {verb: 'get', path: '/findOne'},
-  {verb: 'get', path: '/find-one'},
-  {verb: 'get', path: '/:id'}
-];
-
 /**
  * Destroy all records
  * @param {Function} cb - callback called with (err)
@@ -387,7 +384,7 @@ DataAccessObject.count = function (where, cb) {
 // count ~ remoting attributes
 DataAccessObject.count.shared = true;
 DataAccessObject.count.accepts = [
-  {arg: 'where', type: 'object', optional: true}
+  {arg: 'where', type: 'object'}
 ];
 DataAccessObject.count.http = {verb: 'get', path: '/count'};
 
@@ -467,7 +464,7 @@ DataAccessObject.prototype.save.shared = true;
 DataAccessObject.prototype.save.returns = {arg: 'obj', type: 'object'};
 DataAccessObject.prototype.save.http = [
   {verb: 'post', path: '/'},
-  {verb: 'put', path: '/:id'}
+  {verb: 'put', path: '/'}
 ];
 
 DataAccessObject.prototype.isNewRecord = function () {
diff --git a/lib/datasource.js b/lib/datasource.js
index 046194e7..09b06324 100644
--- a/lib/datasource.js
+++ b/lib/datasource.js
@@ -243,6 +243,7 @@ DataSource.prototype.mixin = function (ModelCtor) {
 DataSource.prototype.attach = function (ModelCtor) {
   var properties = ModelCtor.schema.definitions[ModelCtor.modelName].properties;
   var settings = ModelCtor.schema.definitions[ModelCtor.modelName].settings;
+  var className = ModelCtor.modelName;
 
   this.mixin(ModelCtor);
 
@@ -259,11 +260,13 @@ DataSource.prototype.attach = function (ModelCtor) {
   hiddenProperty(ModelCtor, 'schema', this);
   
   // add to def
-  this.definitions[ModelCtor.modelName] = {
+  this.definitions[className] = {
       properties: properties,
       settings: settings
   };
   
+  this.models[className] = ModelCtor;
+  
   return this;
 }
 
@@ -632,6 +635,7 @@ DataSource.prototype.defineForeignKey = function defineForeignKey(className, key
     } else {
         this.definitions[className].properties[key] = {type: Number};
     }
+    
     this.models[className].registerProperty(key);
 };