Commit Graph

603 Commits

Author SHA1 Message Date
Miroslav Bajtoš 842e543bf7 Merge pull request #415 from strongloop/fix/regression-in-dao-save
Fix regression in `.save()` from 1fd6eff
2015-01-30 18:28:10 +01:00
Raymond Feng e41b2d9393 Merge pull request #414 from strongloop/feature/fix-hasone-remoting
Fix hasOne remoting
2015-01-30 08:23:46 -08:00
Miroslav Bajtoš 5cfbfe3a19 Fix regression in `.save()` from 1fd6eff1
The commit 1fd6eff1 (intent-based hooks) introduced a subtle regression
in `.save()` method where dynamic property setters were invoked twice.

This commit fixes the problem by moving pre-save data normalization
into `before save` callback.
2015-01-30 11:31:12 +01:00
Raymond Feng e46bd0cdb5 Fix hasOne remoting 2015-01-29 23:26:11 -08:00
Raymond Feng 7d42202d40 Make sure batch create calls back with correct data
See https://github.com/strongloop/loopback/issues/1031
2015-01-29 11:52:39 -08:00
Miroslav Bajtoš 1fd6eff10f Intent-based hooks for persistence
This patch introduces a new API for "intent-based" hooks. These hooks
are not tied to a particular method (e.g. "find" or "update"). Instead,
they are triggered from all methods that execute a particular "intent".

The consumer API is very simple, there is a new method
Model.observe(name, observer), where the observer is function
observer(context, callback).

Observers are inherited by child models and it is possible to register
multiple observers for the same hook.

List of hooks:

 - query
 - before save
 - after save
 - after delete
2015-01-29 08:43:52 +01:00
Miroslav Bajtoš b3d07ebbe8 ModelBaseClass: implement async observe/notify
Implement infrastructure for intent-based hooks.
2015-01-29 08:43:50 +01:00
James Billingham 28f3f5d9f8 Fixed nullCheck in validations to correct behavior when dealing with undefined attributes 2015-01-27 22:18:47 +00:00
Fabien Franzen a08ef823be Supply target to applyProperties function 2015-01-26 19:09:29 +01:00
Clark Wang 2e9e2dd192 fix id property for composite ids
Signed-off-by: Clark Wang <clark.wangs@gmail.com>
2015-01-22 10:39:47 +08:00
Clark Wang c37de7f008 fix id properties should sort by its index
Signed-off-by: Clark Wang <clark.wangs@gmail.com>
2015-01-21 20:16:34 +08:00
Christian Enevoldsen 7372fafc97 Fixed typos and logic for protected properties 2015-01-20 21:32:31 +01:00
Christian Enevoldsen d39f539413 adds support for protected properties. 2015-01-20 20:58:52 +01:00
Clark Wang 83c3a17f87 support embeds data for belongsTo relation
Signed-off-by: Clark Wang <clark.wangs@gmail.com>
2015-01-19 22:56:09 +08:00
Raymond Feng 4aeb831bd5 Merge pull request #358 from clarkorz/fix/beforeCreate-belongsTo
fix recursive calls if create belongsTo model in beforeCreate hook
2015-01-14 14:42:29 -08:00
Raymond Feng 8dfe877639 Remove console.log 2015-01-14 11:51:47 -08:00
Raymond Feng f1bdf50e2a Merge pull request #387 from fabien/fix/coerce
Don't coerce nested objects into Model instances
2015-01-14 11:43:38 -08:00
Miroslav Bajtoš e4fc38788f Fix Model.prototype.inspect
Return the raw object data when running on Node v0.11.14+
That way all `inspect` options are always preserved.

When running on older version:
 - Honour the depth argument passed to the custom `inspect` function.
 - Disable color output, becase there is now way how to detect whether
   colors were enabled or disabled by the top-level caller.
2015-01-12 17:12:18 +01:00
Miroslav Bajtoš 9b759c95ac Include property value in the error message
When building a list of errors for `ValidationError.message`, include
the values of invalid properties too.

In order to keep the message reasonably short, the values are truncated
at approx 32 characters.
2015-01-12 17:12:18 +01:00
Fabien Franzen a24b222a72 Don't coerce nested objects into Model instances
For queries, this is undesirable. It also affects
loopback-connector-mongodb's ability to perform nested queries (it
expects plain objects to work correctly, and to allow $elemMatch for
example).
2015-01-08 15:34:04 +01:00
Raymond Feng eac7526e80 Merge pull request #379 from cvette/memory-order-fix
fix sorting of undefined values in memory connector
2015-01-06 09:39:49 -08:00
Christian Vette 99acd364d2 added test for sorting undefined values 2015-01-05 21:56:17 +01:00
Raymond Feng f4c540ca02 Merge pull request #382 from clarkorz/feature/findOrCreate-flag
add a flag to callback of findOrCreate to indicate find or create
2015-01-05 11:18:06 -08:00
Raymond Feng 88b85a7fa2 Fix the floating number comparison 2015-01-05 10:53:26 -08:00
Clark Wang ce2b580ccd add a flag to callback of findOrCreate to indicate find or create
Signed-off-by: Clark Wang <clark.wangs@gmail.com>
2014-12-25 22:19:15 +08:00
Ritchie Martori efe4601fdb Merge pull request #370 from simoami/master
Fixed the haversine formula to calculate distance between 2 points
2014-12-18 15:08:42 -08:00
Simo Moujami e1a60f146e Added support for inline parameters like: new GeoPoint(-34, 150) 2014-12-18 10:47:06 -05:00
Clark Wang 6fa8969912 fix default include in default scope fails findById
Signed-off-by: Clark Wang <clark.wangs@gmail.com>
2014-12-11 15:14:35 +08:00
Simo Moujami b990afc910 Added test for toString() 2014-12-10 19:43:49 -05:00
Simo Moujami beaa97f6f4 Fixed constructor parameters and added bdd tests for constructor validation 2014-12-10 19:36:02 -05:00
Simo Moujami 87027b49f8 Fixed indentation 2014-12-10 17:47:32 -05:00
Simo Moujami 62c6ea0ddd Added mocha tests for GeoPoint 2014-12-10 17:41:49 -05:00
Raymond Feng 73d022398a Relax the id comparison 2014-12-08 16:18:42 -08:00
Raymond Feng d92905d53e Merge pull request #360 from clarkorz/fix/embedsOne-errors
fix embedsOne error when embed instance is undefined or null
2014-12-03 15:35:18 -08:00
Raymond Feng c51d1e9a08 Merge pull request #354 from clarkorz/fix/skip-validation
fix skipping async validator will always fail if condition is un-fulfilled
2014-12-03 15:22:57 -08:00
Clark Wang 9d2e6516c3 fix embedsOne error when embed instance is undefined or null
Signed-off-by: Clark Wang <clark.wangs@gmail.com>
2014-11-28 13:45:47 +08:00
Clark Wang 40f03f084b fix recursive calls if create belongsTo model in beforeCreate hook
Signed-off-by: Clark Wang <clark.wangs@gmail.com>
2014-11-24 19:20:38 +08:00
Clark Wang a9cc1c38df Allow hasOne relation to have a scope option
Signed-off-by: Clark Wang <clark.wangs@gmail.com>
2014-11-20 19:27:04 +08:00
Clark Wang 973dd33d63 fix skipping async validator will always fail if condition is un-fulfilled
If the validator configured with `{async:true}` option and `if/unless`
condition, validator should be skipped when the condition is un-fulfilled,
so the validator should be pass.

But currently, when skipping the validator, it calls `done(true)` which
accepts a `fail` flag as a param, this will fail the entire validation.

Signed-off-by: Clark Wang <clark.wangs@gmail.com>
2014-11-19 21:50:08 +08:00
Raymond Feng ba29669e0d Merge branch 'fix/350-create-batch-hasmany-relation' of github.com:BuddyHOPP/loopback-datasource-juggler into BuddyHOPP-fix/350-create-batch-hasmany-relation 2014-11-13 12:50:21 -08:00
bitmage d11eacffc6 handle relationship create with [array] 2014-11-11 14:48:34 -07:00
Alex Voitau 5c2468c4ef #350: Creating a batch via hasMany relation is failing. Added handling of array argument. 2014-11-07 18:01:18 -08:00
Alex Voitau f1638e9e4c #350: Creating a batch via hasMany relation is failing. Added context 'with scope' to allow individual execution of tests. 2014-11-07 15:21:15 -08:00
Raymond Feng 14dcfb61be Add support for multiple includes that use relation syntax 2014-11-04 20:45:25 -08:00
Raymond Feng 5cd9e88ab2 Merge pull request #334 from pandaiolo/fix/has-one-pk
Fix for HasOne relation with non-standard id
2014-10-30 14:26:13 -07:00
Raymond Feng 11963ea12a Merge pull request #338 from fabien/fix/fields-vs-defaults
Don't apply defaults when fields are specified
2014-10-30 14:11:51 -07:00
Pandaiolo 833c24a2a3 Tests for non standard id - hasOne and polymorphic 2014-10-29 12:06:05 +01:00
Fabien Franzen e7a108efdb Don't apply defaults when fields are specified 2014-10-19 18:47:27 +02:00
Raymond Feng 455743167a Fix the automigrate issue
See https://github.com/strongloop/loopback-example-relations-basic/issues/6
2014-10-16 12:04:16 -07:00
Fabien Franzen 5662d9f0c2 Merge pull request #329 from fabien/feature/include-scope
Enable include scope for belongsTo
2014-10-15 18:08:42 +02:00
Fabien Franzen 55d116ec3f Enable include scope for belongsTo 2014-10-14 22:47:59 +02:00
Raymond Feng 07993d2e1f Merge pull request #324 from fabien/feature/include-scope
Include scope
2014-10-13 08:33:26 -07:00
Miroslav Bajtoš 14d178bf69 Don't inherit settings.base when extending a model
Fix the bug in `ModelClass.extend` where the `base` option used
in the new class was inherited from ModelClass. As a result
the extended model was incorrectly based on ModelClass's parent.

Modify `modelBuilder.define` to normalize the property name storing
the name of the base model to `settings.base`.
2014-10-10 18:35:18 +02:00
Fabien Franzen 8d6e3adaab Allow include syntax without scope param 2014-10-10 17:17:36 +02:00
Fabien Franzen 0c28ccedac Refactored inclusion
The syntax is now consistent, regardless of using [] or {} for the
include param.
2014-10-10 14:24:25 +02:00
Fabien Franzen ca0b3399c8 Implement include scopes 2014-10-10 12:28:39 +02:00
Fabien Franzen 2838158139 Fix failing test 2014-10-09 18:18:04 +02:00
Fabien Franzen 0e49dc94ec Allow `attributes` as an alias for `properties` (for LDL) 2014-10-09 18:14:04 +02:00
Fabien Franzen ec05d0b5a8 Cleanup, consistency: allow properties to be a function
Also, pass along the current instance, for any instance method as a
context (save, updateAttributes).
2014-10-09 18:14:04 +02:00
Fabien Franzen beeb7c46c9 applyProperties => properties (object/false) 2014-10-09 18:14:04 +02:00
Fabien Franzen 702796a486 Test default scope with relations 2014-10-09 18:14:04 +02:00
Fabien Franzen 49e2b8b8dc Allow default scope to be a function 2014-10-09 18:14:04 +02:00
Fabien Franzen b136a8fce7 Full test CRUD suite for default scope 2014-10-09 18:14:04 +02:00
Fabien Franzen ad55681d69 Properly reset Memory connector cache on automigrate 2014-10-09 18:13:58 +02:00
Fabien Franzen 8352ed3afc Implemented collection setting for Memory connector 2014-10-09 18:13:57 +02:00
Fabien Franzen 610866bd7c Extract mergeQuery and setScopeValuesFromWhere
Related to #274 - in preparation of default scope
2014-10-09 18:13:40 +02:00
Raymond Feng 43e0f0f6fa Merge pull request #301 from strongloop/feature/allow-base-for-discovery
Tidy up model building from data sources
2014-09-23 16:38:17 -07:00
Raymond Feng b5cebd75a7 Merge pull request #303 from khashayar/feature/test-improvement
Test improvement, shows _targetClass camelCase bug
2014-09-23 16:37:59 -07:00
Khashayar Hajian 28a661a81a Test improvement, shows _targetClass camelCase bug
There is an issue where setting _targetClass on hasAndBelongsToMany
relations with a camel-case model name, fails.

Signed-off-by: Khashayar Hajian <me@khashayar.me>
2014-09-17 17:28:40 +02:00
Raymond Feng fe74c8019c Tidy up model building from data sources
See https://github.com/strongloop/loopback/issues/560
2014-09-12 14:25:35 -07:00
Raymond Feng 3655107334 Merge pull request #295 from fabien/fix/embeds-many
Various improvements to embedded relations
2014-09-12 10:31:49 -07:00
Raymond Feng af40505703 Merge pull request #290 from fabien/feature/enforce-id
Enforce id (prevent user-set value), fix isNewRecord
2014-09-12 10:31:10 -07:00
Raymond Feng 6903253471 Merge pull request #288 from fabien/fix/relation-tests
Test sync (cached) relation getters
2014-09-12 10:29:42 -07:00
Fabien Franzen d1a08ef6b3 Add test case for Numeric ids (with optional forceId) 2014-09-07 20:54:11 +02:00
Fabien Franzen e441924fa3 Allow embedsOne to use auto-generated id (from connector)
If the connector has a `generateId` method - like Transient - it can be
used to set the id (when the property has been set to `generated:
true`).
2014-09-07 13:24:05 +02:00
Fabien Franzen 21e1083e88 Implemented persistent: true option for embedsOne 2014-09-07 13:10:23 +02:00
Fabien Franzen 95764232b9 Introduce embedsMany persistent: true option
When set, instead of only embedding the model (on creation) it will be
persisted first, and subsequently embedded.
2014-09-07 12:59:47 +02:00
Fabien Franzen ef816d490a More tests for embedsMany with persistent model 2014-09-07 12:44:45 +02:00
Fabien Franzen 4c6f35d23d Only check id as part of embedsMany relation 2014-09-07 12:17:42 +02:00
Fabien Franzen a66e612c87 Fix multi-property validation definitions
Fixes #291, as introduced by me ...
https://github.com/strongloop/loopback-datasource-juggler/commit/6fae8c7
27759256157bf7ccd82e04ee372a59088
2014-09-05 18:00:11 +02:00
Fabien Franzen d8cafd0c84 Tiny fixes 2014-09-05 17:28:50 +02:00
Fabien Franzen fafe51833b More fixes/tests 2014-09-05 17:09:23 +02:00
Fabien Franzen aebf5e9e6b Enforce id (prevent user-set value), fix isNewRecord 2014-09-05 16:35:01 +02:00
Fabien Franzen a815ad0c1a Test .value() method - as used by scope getter 2014-09-04 21:57:18 +02:00
Fabien Franzen 433b89a78a embedsMany - implement sync scope getter 2014-09-04 21:51:59 +02:00
Fabien Franzen 92a76d3edb hasAndBelongsToMany - test sync scope getter 2014-09-04 21:30:41 +02:00
Fabien Franzen 80b71438a7 polymorphic hasMany - test sync scope getter 2014-09-04 21:29:21 +02:00
Fabien Franzen e502bd4459 hasOne - test sync scope getter 2014-09-04 21:27:40 +02:00
Fabien Franzen 98a75103a1 hasMany through - sync scope getter 2014-09-04 21:25:26 +02:00
Fabien Franzen 3efe7ab354 Scope method should return cached relation value (sync) 2014-09-04 21:23:24 +02:00
Raymond Feng 9a44d11e8e Merge pull request #266 from strongloop/feature/fix-issue-265
Add neq operator support for memory connector
2014-09-04 10:30:08 -07:00
Fabien Franzen 830a3f6f1a Remove legacy Schema references 2014-09-04 18:01:04 +02:00
Fabien Franzen 7b788a2903 getTransientSchema => getTransientDataSource 2014-09-04 17:56:26 +02:00
Fabien Franzen 72930bf20b Re-use modelBuilder - correctly fixes lookup 2014-09-04 17:54:42 +02:00
Fabien Franzen 2c0ffee2d3 Polymorphic lookup from all registered dataSources
Polymorphic model lookup was previously limited to the same dataSource
as the modelFrom model, which turns out to be too restrictive. This was
uncovered by the use of a Transient model, not being able to lookup a
PersistedModel.
2014-09-04 17:31:53 +02:00
Fabien Franzen 4abe7f4954 Isolate transient schema helper 2014-09-04 15:33:12 +02:00
Raymond Feng b22dae3c7a Merge pull request #281 from clarkorz/fix/hasManyThrough-custom-relation-name
Allows the belongsTo relations in through model to have custom name
2014-09-03 08:14:59 -07:00
Clark Wang 1393bd0759 Refector tests and codes
1. remove error
2. prune tests

Signed-off-by: Clark Wang <clark.wangs@gmail.com>
2014-09-03 21:51:21 +08:00
Clark Wang b6f2026493 Refactor tests and codes
Signed-off-by: Clark Wang <clark.wangs@gmail.com>
2014-09-03 19:58:39 +08:00
Raymond Feng cf3128467c Merge pull request #275 from clarkorz/feature/add-with-through-data
Allow to add connection with through data for HasManyThrough relation
2014-09-02 22:44:01 -07:00