Raymond Feng
bcd477358f
Assert the existence of instance
2015-07-02 14:56:46 -07:00
Raymond Feng
eb6fa410fe
Fix coercion from ObjectID to String
2015-07-01 14:58:14 -07:00
Miroslav Bajtoš
e55469693d
test: fix persistence-hooks failures in MySQL
2015-06-24 18:31:30 +02:00
Miroslav Bajtoš
293240d752
Merge pull request #599 from PradnyaBaviskar/issue-441
...
Add new hook 'loaded'
2015-06-24 16:35:50 +02:00
Pradnya Baviskar
e7430184a9
Promisify 'autoupdate'
2015-06-23 18:02:08 +05:30
Pradnya Baviskar
20cf67d798
Add new hook 'loaded'
2015-06-23 12:04:46 +05:30
Raymond Feng
97f905ff1f
Fix the test case
2015-06-16 13:35:35 -07:00
Raymond Feng
bbe9cb350c
Merge pull request #626 from walkonsocial/include-issues
...
Fix for issues #622 & #623
2015-06-16 08:55:29 -07:00
Miroslav Bajtoš
ecb8968166
Merge pull request #630 from PradnyaBaviskar/issue-418
...
Promisify 'automigrate'
2015-06-16 10:46:07 +03:00
Pradnya Baviskar
f4f13a6626
Promisify 'automigrate'
2015-06-16 12:58:21 +05:30
Raymond Feng
b0f1aae533
Fix the test case as updateAll takes `where` directly
2015-06-15 15:17:47 -07:00
ningsuhen
052e22ab43
Fix for issues #622 & #623
...
polymorphic hasOne needs separate handling and hasMany->referencesMany has a unique case which is fixed for MongoDB as suggested by @fabien.
2015-06-12 01:55:25 +05:30
Pradnya Baviskar
3b0e77cb0a
Add new hook 'persist'
2015-06-10 16:19:13 +05:30
Raymond Feng
493d98f66b
Dedupe ids args of inq for include
2015-05-29 10:50:37 -07:00
Raymond Feng
c9d6071485
Fix the test case
2015-05-29 08:57:28 -07:00
Raymond Feng
b8b4d95e7e
Merge pull request #584 from violet-day/feature/scope-dynamic-query
...
add test suit for scope - dynamic function
2015-05-28 14:45:14 -07:00
Raymond Feng
e0e6a0cdbb
Merge pull request #588 from mamboer/master
...
fix issue #587
2015-05-28 14:44:11 -07:00
Raymond Feng
46e6ad2fd6
Merge pull request #602 from strongloop/feature/more-tests-for-observers
...
Enhance the apis and add more tests
2015-05-27 11:08:00 -07:00
Raymond Feng
621adf5435
Enhance the apis and add more tests
2015-05-26 10:15:39 -07:00
mamboer
69bd7c1233
Merge remote-tracking branch 'upstream/master'
2015-05-26 12:28:11 +08:00
Raymond Feng
a028b2644c
Fix for https://github.com/strongloop/loopback/issues/1401
2015-05-22 11:39:37 -07:00
Raymond Feng
12dea6e1cb
Merge pull request #598 from strongloop/feature/add-connector-hooks
...
Mix in observer apis to the connector
2015-05-21 10:43:32 -07:00
Raymond Feng
5af6bf54df
Merge pull request #597 from strongloop/feature/enhance-fields-to-array
...
Enhance fieldsToArray to consider strict mode
2015-05-21 09:43:40 -07:00
Raymond Feng
506223885d
Mix in observer apis to the connector
2015-05-20 15:02:44 -07:00
Raymond Feng
cbb8d7c789
Remove dep on sinon
2015-05-20 09:13:56 -07:00
Raymond Feng
966bb56c31
Enhance fieldsToArray to consider strict mode
2015-05-19 22:32:03 -07:00
Raymond Feng
eac74ad014
Make sure relation scope is applied during include
2015-05-16 11:49:02 -07:00
mamboer
5ff3798e8e
enhancement on #588
2015-05-14 09:55:54 +08:00
mamboer
ba68df3ef3
Merge remote-tracking branch 'upstream/master'
2015-05-14 09:26:50 +08:00
Raymond Feng
f9bd1544f9
Merge branch 'include-db-call-spike' of https://github.com/walkonsocial/loopback-datasource-juggler into walkonsocial-include-db-call-spike
2015-05-13 13:15:46 -07:00
ningsuhen
d009557a76
DB Call Optimization in relation includes - Fixes #408 & #166
2015-05-14 00:19:43 +05:30
Raymond Feng
5ef444e45d
Conditionally pass options to connector CRUD methods
2015-05-13 09:36:45 -07:00
mamboer
d27b2eb25f
fix issue #587
2015-05-13 13:18:50 +08:00
Nemo
61dc239bd8
add test suit for scope - dynamic function
2015-05-11 12:05:22 +08:00
Fabien Franzen
df7d221f31
Pass-through options from save to create
2015-05-10 10:44:22 +02:00
Miroslav Bajtoš
128665f1bd
Merge pull request #578 from strongloop/fix/validate-upsert
...
dao: support validateUpsert:false
2015-05-05 17:50:50 +02:00
Miroslav Bajtoš
9bc79d2366
dao: support validateUpsert:false
...
- validateUpsert:true reports validation errors back to the callback
- validateUpsert:false does not call `isValid()` at all
- any other value report validation errors via `console.warn`
2015-05-05 08:24:08 +02:00
Miroslav Bajtoš
f4be88357c
Add unit-test for "array" type
...
Add a unit-test to capture the fact that a property type can be
specified as `type: 'array'`.
2015-05-04 15:00:06 +02:00
Raymond Feng
33bbd8634c
Fix the test cases
2015-04-24 16:50:15 -07:00
Raymond Feng
3aa90751be
Merge branch 'merge-inclusion' of https://github.com/walkonsocial/loopback-datasource-juggler into walkonsocial-merge-inclusion
2015-04-24 16:12:38 -07:00
Raymond Feng
03a34fd086
Merge branch 'hasmanythrough-inconsitency' of https://github.com/walkonsocial/loopback-datasource-juggler into walkonsocial-hasmanythrough-inconsitency
2015-04-24 16:08:08 -07:00
ningsuhen
9a7f13ff0f
Add support for merging include filters
2015-04-25 01:59:39 +05:30
ningsuhen
7861c08e5a
add test case for hasmanythrough bi-drectional relations
2015-04-25 01:32:33 +05:30
Raymond Feng
c609b6d7ce
Allow leading slash for `path` in model settings
2015-04-24 08:23:13 -07:00
Miroslav Bajtoš
40eecd98c9
validations: treat `NaN` as a blank value
...
When a required number property is set to NaN, for example as a result
of coersion (`Number([1,2,3])`), the "presence" validation now correctly
reports an error.
2015-04-22 19:57:48 +02:00
Raymond Feng
c338c2326d
Merge pull request #561 from strongloop/feature/allow-name-mapper-for-discovery
...
Allow custom name mapping for discovered models
2015-04-22 08:43:09 -07:00
Raymond Feng
1e70678fa7
Allow custom name mapping for discovered models
2015-04-22 08:42:47 -07:00
Miroslav Bajtoš
b642d52fbe
Merge pull request #565 from strongloop/feature/validate-upsert
...
Validate model on updateOrCreate (upsert).
2015-04-17 17:20:55 +02:00
Raymond Feng
988a929577
Extend findById to accept an optional filter object
2015-04-16 09:06:53 -07:00
Miroslav Bajtoš
3df62444d6
Validate model on updateOrCreate (upsert).
...
Fix the implementation of updateOrCreate (a.k.a. upsert) to validate
the model before calling the connector.
In order to preserve backwards compatibility, validation errors are
only logged via console.warn by default.
The correct behaviour, where validation errors fail the updateOrCreate
operation, can be enabled via new model setting "validateUpsert".
2015-04-16 09:09:54 +02:00
Miroslav Bajtoš
99d4c6aa8d
Add new strict mode "validate"
...
When a model is configured with `strict: 'validate'`,
any dynamic properties not included in the schema trigger
a validation error.
2015-04-14 08:16:10 +02:00
Partap Davis
29eb3434c7
Promisify model relation methods
...
When a callback is omitted from a method on a model relation that
supports promises, return that promise. This includes all the standard
DAO methods, as well as any user-defined methods that return promises.
e.g.:
mylist.todos.create({name: 'Item 1'}) // returns Promise
This API will use native ES6 promises if available. If not available,
or to force the use of another Promise library, you must assign the
global.Promise object.
e.g.:
global.Promise = require('bluebird')
Relations affected:
- BelongsTo
- HasOne
- HasMany
- HasManyThrough
- HasAndBelongsToMany
- ReferencesMany
- EmbedsOne
Exceptions:
The EmbedsMany relation has not been promisified, because most of the
methods return synchronous values.
The base relation getter method [e.g.: mylist.todos()] has not been
promisified, due to its default caching behavior.
New Methods:
- getAsync(condition, cb)
A new method "getAsync()" has been added to all relations except
EmbedsMany, which always fetches from the datasource rather than from
the cache. It takes an optional "where" condition (except for HasOne
and BelongsTo) and an optional callback. If the callback is omitted,
a Promise is returned.
2015-04-07 11:41:07 +02:00
Raymond Feng
16cc870f57
Merge pull request #544 from strongloop/feature/nesting-doc-query
...
Allow nesting properties to be queried for memory connector
2015-04-02 08:47:10 -07:00
Miroslav Bajtoš
cd7bc46efb
Deprecate property names containing a dot
2015-04-02 09:49:04 +02:00
Miroslav Bajtoš
a00b91db79
Fix test for "after save" called on save/CREATE
...
Fix the test to correctly trigger the code path where the connector
decides whether a new record is created or an existing one is updated.
2015-04-01 18:25:45 +02:00
Fabien Franzen
17c8576097
Save parent model of embedded relations
2015-04-01 16:59:21 +02:00
Raymond Feng
8d1e782199
Merge pull request #546 from fabien/feature/scope-update-all
...
Implement scope.updateAll
2015-03-30 14:35:47 -07:00
Raymond Feng
44e5ad1fef
Merge pull request #549 from fabien/feature/hookstate-from-options
...
Allow passing in hookState from options
2015-03-30 14:35:34 -07:00
Miroslav Bajtoš
d18fa04ee9
Merge pull request #548 from strongloop/fix/persistUndefinedAsNull-tests-and-SQL
...
Fix persistUndefinedAsNull tests w/ SQL connectors
2015-03-30 19:28:40 +02:00
Fabien Franzen
1ab3d74ab5
Pass options in operation hooks context.
2015-03-30 18:03:42 +02:00
Raymond Feng
7c7f04955d
Merge pull request #543 from strongloop/feature/fix-test-case
...
Fix the test cases so that they be run with the mssql connector
2015-03-30 08:25:10 -07:00
Miroslav Bajtoš
517ea875ec
Merge pull request #500 from 0angelic0/master
...
Remove and clear Operation Hook observers
2015-03-30 11:26:57 +02:00
Miroslav Bajtoš
b66d9fbc54
Fix persistUndefinedAsNull tests w/ SQL connectors
...
Check whether the connector enables strict mode and don't assert on
dynamic properties in such case.
2015-03-30 10:45:55 +02:00
Fabien Franzen
7e55ef18f8
Implement scope.updateAll
2015-03-28 21:25:24 +01:00
Raymond Feng
137d096cfb
Allow nesting properties to be queried for memory connector
...
See https://github.com/strongloop/loopback/issues/517
2015-03-27 16:05:12 -07:00
Raymond Feng
d192b2ea05
Fix the test cases so that they be run with the mssql connector
...
For SQL server, if the PK is an identity, the id cannot be set for
insert.
2015-03-27 14:18:17 -07:00
Miroslav Bajtoš
9fd4c00225
Add model setting "persistUndefinedAsNull"
...
When the setting "persistUndefinedAsNull" is true,
the model will use `null` instead of `undefined` in
all property values.
- Known optional model properties are set to `null` when no value
was provided.
- When setting model properties, `undefined` is always converted
to `null`. This applies to both known (model-defined) properties
and additional (custom, dynamic) properties.
- The instance method `toObject()` converts `undefined` to `null` too.
Because `toJSON()` calls `toObject()` under the hood, the change
applies to `toJSON()` too.
2015-03-27 18:25:26 +01:00
Simon Ho
311ab293d2
Clean up delete and update tests
2015-03-24 21:30:40 -07:00
Simon Ho
f7540edf8a
Clean up wording in update/delete tests
2015-03-24 12:15:35 -07:00
Simon Ho
8467243e63
Fix wording in update test
2015-03-24 11:47:13 -07:00
Fabien Franzen
aa5943f6b0
Properly support embedsMany destroyAll
2015-03-24 15:39:55 +01:00
Simon Ho
3f97586455
Clean up update/delete manipulation tests
2015-03-23 14:41:38 -07:00
Miroslav Bajtoš
35b549543d
test: fix test failure in MySQL connector
...
Fix a test using a string Person.id value to use a numeric value
instead, in order to support connectors that use numeric ids by default.
2015-03-23 09:18:46 +01:00
Miroslav Bajtoš
1fbaf4e382
Improve test failure messages
...
Replace
foo.count.should.equal(X)
Uncaught TypeError: Cannot read property 'should' of undefined
with
foo.should.have.property('count', X)`
Uncaught AssertionError: expected 0 to have property count
2015-03-23 08:44:53 +01:00
Miroslav Bajtoš
f7dc6fab90
Fix regression in prototype.save
...
ffcaa4e7
added a "data" argument to the callback function, which
shadowed the original data with the data returned by a connector.
Not all connectors are returning a data object though, in which case
the model instance ("this" object) is updated with wrong values.
This commit fixes the problem by renaming the second callback argument
to "unusedData".
2015-03-23 08:34:21 +01:00
Fabien Franzen
8199767a8a
Implement scope.findOne
2015-03-21 13:44:06 +01:00
Raymond Feng
5d0b745f31
Merge pull request #520 from fabien/feature/scope-find-by-id
...
Implement scope.findById
2015-03-20 12:00:56 -07:00
Raymond Feng
2f0561a7a8
Merge pull request #514 from fabien/feature/relation-methods
...
Enable defineMethod for singular relations
2015-03-20 11:57:45 -07:00
Raymond Feng
4ac227b052
Merge pull request #522 from strongloop/feature/enhance-id-comparison-for-updateAttributes
...
Enhance id comparision for updateAttributes
2015-03-20 11:06:57 -07:00
Raymond Feng
6a40a8a5e5
Enhance id comparision for updateAttributes
...
string/number and MongoDB ObjectID equality are now allowed.
2015-03-20 11:06:24 -07:00
Miroslav Bajtoš
84d538c1ca
Merge pull request #515 from strongloop/feature/isNewInstance
...
Add ctx.isNewInstance for "save" hooks
2015-03-20 18:33:55 +01:00
Fabien Franzen
54781f376e
Enable custom methods on singular relations
2015-03-20 18:15:58 +01:00
Fabien Franzen
34acc6c50a
Implement scope.findById
2015-03-20 16:37:46 +01:00
Simon Ho
04f35b31b4
Memory connector returns updated records count
...
The memory connector now includes the number of updated items in its callback
when updating records.
2015-03-19 15:40:14 -07:00
Raymond Feng
a8d8556dcc
Merge pull request #499 from clarkorz/fix/merge-mixins
...
fix #429 Multiple Models can't mixin same class
2015-03-19 13:21:22 -07:00
Miroslav Bajtoš
ffcaa4e76e
Add ctx.isNewInstance for "save" hooks
...
"before save" hooks provide "ctx.isNewInstance" whenever "ctx.instance"
is set. Possible values:
- true for all CREATE operations
- false for all UPDATE operations
- undefined for "prototype.save"
"after save" hooks provide "ctx.isNewInstance" whenever "ctx.instance"
is set. Possible values:
- true after all CREATE operations
- false after all UPDATE operations
- undefined after "updateOrCreate" and "save"
Note: both "updateOrCreate" and "prototype.updateAttributes"
don't provide `ctx.instance` to "before save" hooks, therefore
`ctx.isNewInstance` it not provided either.
2015-03-19 18:05:24 +01:00
Miroslav Bajtoš
d731252941
deleteAll returns number of deleted records
...
The number is returned as `data.ctx` to `cb(null, data)`.
2015-03-19 17:54:22 +01:00
Miroslav Bajtoš
ae3dc3cec2
Merge pull request #510 from strongloop/fix/duplicate-create
...
Reject CREATE with a duplicate id
2015-03-19 17:37:01 +01:00
Raymond Feng
01fb5db550
Merge pull request #509 from dbarbeau/master
...
Enable "between" filter for memory db connector
2015-03-16 10:41:38 -07:00
Miroslav Bajtoš
6f11c2d717
DAO: Fix updateOrCreate to set persisted:true
...
Before this commit, the following code would not work:
Change.updateOrCreate({...}, function(err, ch) {
// somewhere later, modify "ch" and save the changes
ch.save(cb);
});
2015-03-16 18:26:42 +01:00
Miroslav Bajtoš
902772f1af
Reject CREATE with a duplicate id
...
Modify the memory connector to reject requests to create a record
with a duplicate id.
Add a unit-test to verify this behaviour across all connectors.
2015-03-16 18:26:42 +01:00
Daniel B. Vasquez
3de94cb9bd
add tests for between in memory connector
2015-03-16 18:26:33 +01:00
Raymond Feng
f91399a307
Fix the test case so that at least one property is to be changed
2015-03-16 09:26:03 -07:00
Raymond Feng
04348a1168
Make sure id properties cannot be changed
2015-03-16 09:25:38 -07:00
0angelic0
befe30f14a
Add abilities to remove and clear observers - Operation Hooks.
2015-03-11 18:08:35 +07:00
Fabien Franzen
8605da3ac6
Improve instance-level operation hooks
...
"before delete" and "after delete" hooks receive `ctx.instance`
when a single model is being deleted.
"before save" hook receives `ctx.currentInstance` when triggered
by `prototype.updateAttributes()`.
Note that "after save" hook triggered by `prototype.updateAttributes()`
already provides `ctx.instance`.
2015-03-11 09:35:46 +01:00
Clark Wang
90e169c1a6
fix #429 Multiple Models can't mixin same class
...
Signed-off-by: Clark Wang <clark.wangs@gmail.com>
2015-03-11 16:08:50 +08:00
Raymond Feng
2a24273b4f
Fix the test case
2015-03-10 21:26:36 -07:00
Raymond Feng
159be756ac
Merge pull request #494 from strongloop/feature/allow-submodel-to-hide-base-properties
...
Allow submodel to hide base properties
2015-03-09 13:16:09 -07:00
Fabien Franzen
18b58558cc
Reformat notifyObserversOf context argument
2015-03-05 15:53:34 +01:00