Commit Graph

1200 Commits

Author SHA1 Message Date
Clark Wang 0bef56efc0 support optimized findOrCreate
Signed-off-by: Clark Wang <clark.wangs@gmail.com>

remove undefined for creating data in findOrCreate

Signed-off-by: Clark Wang <clark.wangs@gmail.com>

getLastGeneratedUid instead of force an id

Signed-off-by: Clark Wang <clark.wangs@gmail.com>
2015-02-07 10:23:04 +08:00
Raymond Feng e9c966227d Merge pull request #420 from aol-nnov/fkCustomDbType
Create model foreign key matching type of opposite part of relation (even if it has a custom field type)
2015-02-05 10:28:04 -08:00
Miroslav Bajtoš 2e2e01cc5c Merge pull request #430 from PradnyaBaviskar/issue709
Return 400 when client provides an incorrect value
2015-02-05 12:42:54 +01:00
Pradnya Baviskar be37fb4388 Return 400 when client provides an incorrect value 2015-02-05 16:58:42 +05:30
Miroslav Bajtoš 4889443ed0 Merge pull request #422 from strongloop/feature/fix-mongodb-issue-87
Remove undefined properties for create
2015-02-04 19:11:02 +01:00
Raymond Feng 79eabf3cf9 Fix typo 2015-02-04 08:30:13 -08:00
Clark Wang 09f7c92cbe use findOrCreate in hasOne#create
So hasOne#create could take advantage from optimized findOrCreate,
which can avoid multiple creation among concurrent requests.

Signed-off-by: Clark Wang <clark.wangs@gmail.com>
2015-02-04 14:54:28 +08:00
Raymond Feng 9769df2c91 Remove undefined properties for create
See https://github.com/strongloop/loopback-connector-mongodb/issues/87
2015-02-03 08:35:18 -08:00
Andrey Loukhnov e68ecb461a Create model foreign key matching type of opposite part of relation (even if it has a custom field type) 2015-02-03 13:13:00 +03:00
Miroslav Bajtoš 9298919ec0 Merge pull request #418 from strongloop/feature/rename-query-to-access-hook
Rename hook "query" to "access"
2015-02-02 19:04:47 +01:00
Raymond Feng 4793546353 Merge pull request #400 from chrene/protected
Add support for protected properties.
2015-02-02 09:04:51 -08:00
Raymond Feng bba1ce0768 Merge pull request #405 from clarkorz/fix/id-for-compositeIds
fix id property for composite ids
2015-02-02 08:59:40 -08:00
Raymond Feng fd97b06bcc Merge pull request #416 from strongloop/feature/fix-lb-1058
Fix id type issue for update
2015-02-02 08:58:10 -08:00
Raymond Feng 4afb2385a9 Fix id type issue for update
https://github.com/strongloop/loopback/issues/1058
2015-02-02 08:44:36 -08:00
Miroslav Bajtoš fcaf19a1d2 Rename hook "query" to "access"
The name "query" creates incorrect assumption that hook handlers
may return the result of a query to bypass database access.
That is far from true, since this hook is called also by methods
like `deleteAll` or `updateAll` that don't perform any SELECT query.
2015-02-02 10:41:18 +01:00
Miroslav Bajtoš 370966df99 Implement intent hook `before delete`
Methods `DAO.deleteAll` and `DAO.prototype.delete` now invoke
`before delete` hook too. The hook receives `ctx.where` describing
models to be deleted.
2015-02-02 09:13:31 +01:00
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š 31b9da7d44 Remove redundant `.toObject()` call from `upsert` 2015-01-30 11:31:30 +01: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
Miroslav Bajtoš 2e98c51571 Fix detection of `util.inspect` version
Improve the detection to work in browser too. This fixes a regression
introduced in e4fc3878.
2015-01-15 08:45:52 +01: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 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
Raymond Feng a2b5d6410a Merge pull request #389 from strongloop/feature/include-value-in-validation-error-message
Include property value in the error message
2015-01-14 11:37:10 -08:00
Raymond Feng 2e08d48ad3 Merge pull request #390 from r3dm/fix/call-idNames
Fix virtual id get function.
2015-01-14 11:31:55 -08:00
Dallon Feldner e7fedc2926 Fix for #369
Remember, folks, `typeof null === 'object'`.
2015-01-12 17:38:21 -06:00
Berkeley Martinez 3fac41985b Fix virtual id get function. 2015-01-12 08:43:55 -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
Rand McKinney 2270ba4db4 Update datasource.js
Small fix to JSdoc
2015-01-08 15:30:17 -08:00
Fabien Franzen a19b778cbd Change Model to BaseModel for clarity 2015-01-08 15:44:28 +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
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
Christian Vette e45407256e fix sorting of undefined values with multiple columns 2014-12-22 21:06:01 +01:00
cvette 31c7973763 code style 2014-12-22 18:54:56 +01:00
cvette a6b8ca70af fix sorting with undefined in memory connector 2014-12-22 18:45:39 +01: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 8ba0c3f87d Additional formatting 2014-12-10 19:38:39 -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 45fb633c3a renamed intermediary variable 2014-12-10 17:08:56 -05:00
Simo Moujami ed5aeb1d2d Fixed the haversine formula to calculate distance between 2 points properly 2014-12-10 16:30:07 -05: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
Raymond Feng 6914733a41 Allow more flavors of nullable values from DB discovery 2014-12-03 15:11:27 -08:00
Raymond Feng 48e8ebed7b Fix a typo 2014-12-03 15:11:27 -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
Fabien Franzen 77028b07f8 Be explicit: set RelationDefinition multiple flag 2014-11-24 10:31:28 +01: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
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 9eaeb9e399 Fix HasOne PK on modelFrom instead of modelTo 2014-10-29 12:06:05 +01:00
Fabien Franzen 4e20128945 Tiny fix: default __persisted to false 2014-10-19 18:52:18 +02: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 ded292d79a Merge pull request #327 from fabien/fix/call-scope-method
Call relation methods in the right context
2014-10-15 18:08:10 +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
Fabien Franzen 58a6c924b3 Call relation methods in the right context
Before this change, it was impossible to override 'build' and other
(custom) relation/scope methods; only the original prototype method was
ever called.
2014-10-12 22:00:13 +02: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 771d9505cc Allow 'rel' and 'relation' 2014-10-10 14:33:26 +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 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 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 c3df513712 Fix camel-case issue where relation is 'hasAndBelongsToMany' #304
Signed-off-by: Khashayar Hajian <me@khashayar.me>
2014-09-19 16:23:39 +02:00
Fabien Franzen 7f155966ab Fix to handle new isNewRecord implementation 2014-09-13 00:03:08 +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 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
Raymond Feng f9ce6c248d Merge pull request #287 from fabien/fix/tiny
Export RelationClasses
2014-09-05 09:18:09 -07: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 b4144598bf DAO save() now uses isNewRecord() 2014-09-05 17:22:14 +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 433b89a78a embedsMany - implement sync scope getter 2014-09-04 21:51:59 +02:00
Fabien Franzen 3efe7ab354 Scope method should return cached relation value (sync) 2014-09-04 21:23:24 +02:00
Fabien Franzen 41e0efb2b0 Export RelationClasses
Without this being exported, it was impossible to define custom
relation types. However, there are still limitations - not all helper
methods are public to really handle this scenario.
2014-09-04 21:04:55 +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
Raymond Feng 057d39d5bb Simplify the id lookup 2014-09-04 09:32:38 -07: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 07dbbd4224 Fix #283 2014-09-04 15:37:48 +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 74ad6522e7 tidy codes
Signed-off-by: Clark Wang <clark.wangs@gmail.com>
2014-09-03 21:56:48 +08: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
Clark Wang 26547f8461 Refactor codes into same if condition
Signed-off-by: Clark Wang <clark.wangs@gmail.com>
2014-09-03 12:31:09 +08:00
Clark Wang cb2aeb96fb Fix hasMany through can't custom relation name
Signed-off-by: Clark Wang <clark.wangs@gmail.com>
2014-09-03 11:04:58 +08:00
Raymond Feng a2858d0499 Merge pull request #277 from clarkorz/fix/through-params
Fix options for hasManyThrough doesn't apply
2014-09-02 09:18:39 -07:00
Raymond Feng 6020436063 Added a test case for neq 2014-09-02 08:36:37 -07:00
Clark Wang 4d5f3835bb Fix typo of keyThrough and get from params
Signed-off-by: Clark Wang <clark.wangs@gmail.com>
2014-09-02 21:57:24 +08:00
Clark Wang 0cbc15c631 Remove unnecessary console.log
Signed-off-by: Clark Wang <clark.wangs@gmail.com>
2014-09-02 12:55:52 +08:00
Clark Wang 4b70f2498f Fix options for hasManyThrough doesn't apply
Signed-off-by: Clark Wang <clark.wangs@gmail.com>
2014-09-01 23:59:52 +08:00
Clark Wang 28ac561d63 revert eof 2014-09-01 14:09:38 +08:00
Clark Wang e47a25c1f2 Revert leading spaces 2014-09-01 14:05:23 +08:00
Clark Wang 770cc7eda8 revert change to ReferencesMany.prototype.add
Signed-off-by: Clark Wang <clark.wangs@gmail.com>
2014-09-01 13:35:34 +08:00
Clark Wang 86045d4792 add jsdoc and fix add data to referencesMany.add
Signed-off-by: Clark Wang <clark.wangs@gmail.com>
2014-09-01 09:54:55 +08:00
Raymond Feng f9a26bcb28 Merge pull request #270 from fabien/feature/dynamic-scope-modelTo
Enable dynamic modelTo for scopes
2014-08-31 08:39:14 -07:00
Raymond Feng 97827db59d Merge pull request #268 from fabien/feature/transient-model
Transient connector implementation
2014-08-31 08:37:26 -07:00
Raymond Feng 6527bd0605 Merge pull request #259 from fabien/fix/refactor-validations
Validations configuration as object
2014-08-31 08:37:03 -07:00
Raymond Feng 14dfbb763d Merge pull request #272 from clarkorz/fix/polymorphicName-var-scope
fix polymorphicName var scope
2014-08-31 08:36:22 -07:00
Clark Wang 565b85555c Allow to add connection with through data for HasManyThrough relation
Signed-off-by: Clark Wang <clark.wangs@gmail.com>
2014-08-31 21:40:18 +08:00
Clark Wang d43044c766 fix polymorphicName var scope
see https://github.com/strongloop/loopback-datasource-juggler/issues/271

Signed-off-by: Clark Wang <clark.wangs@gmail.com>
2014-08-31 19:57:37 +08:00
Fabien Franzen 3f517a4c0a Reset json when building model definition 2014-08-31 12:17:53 +02:00
Fabien Franzen 0a9cb72837 Enable dynamic modelTo for scopes
This is especially useful for relations/prototype scopes, as it allows
you to dynamically deduce the target model from the current receiver
(model instance). This is an advanced option that should otherwise have
no effect on the previous/default functionality. Basically, the
targetClass is taken out of the closure and handled by a method called
targetModel now.
2014-08-30 20:58:06 +02:00
Fabien Franzen f31a9b13be Updated embedded relations to use transient connector
embedsMany will now use a connector's generated method, when defined.
Also, the id property type is now inferred correctly, making the autoId
option obsolete. However, a new option, forceId, can be set to enforce
the use of auto-generated ids, preventing any explicitly (user-)set id
values.
2014-08-30 11:43:36 +02:00
Fabien Franzen bd9895ebd6 Implemented Transient connector 2014-08-30 10:53:10 +02:00
Fabien Franzen 170dc661f4 Fix error messages, should be lowercase 2014-08-29 21:30:42 +02:00
Raymond Feng e9f00fbd8b Add neq operator support for memory connector
See https://github.com/strongloop/loopback-datasource-juggler/issues/265
2014-08-29 08:45:45 -07:00
Raymond Feng 32313c1df9 Make sure timeout handle is cleared 2014-08-27 09:42:16 -07:00
Raymond Feng fde5b426e4 Make sure error events are emitted by data source 2014-08-27 09:14:17 -07:00
Fabien Franzen 6fae8c7277 Remove iteration of config args
Fixes #154 - args should only contain the property name at that point,
not loop over it.
2014-08-26 18:01:23 +02:00
Fabien Franzen 86ea107550 Validations configuration as object
Previously validations were appended to an array when configured. The
format was cumbersome, and led to issues. This refactors the
configuration into an object, as a property of the Model.

Note that if no validations have been configured, this property is
currently `undefined`.
2014-08-26 17:51:01 +02:00
Fabien Franzen 73330113ae Applied Coobaha's PR fix - prevents undefined values 2014-08-26 17:15:07 +02:00
Fabien Franzen bed97a75cb Expose validation metadata
The new Validatable.validations mixin method returns the validations as
an object
indexed by property name.
2014-08-26 16:56:09 +02:00
Fabien Franzen a4db887493 Implement where arg on scoped count and destroyAll 2014-08-26 14:54:19 +02:00
Fabien Franzen b27fd6527e Use the correct dataSource for modelFrom/modelTo 2014-08-22 21:38:28 +02:00
Raymond Feng ce12db3e45 Merge pull request #250 from offlinehacker/embedsMany_deleted
Emit deleted event on delete for embedsMany relations
2014-08-22 11:05:21 -07:00
Raymond Feng 0f3e7d50bd Merge pull request #239 from strongloop/feature/add-ping
Add ping() to test connections
2014-08-22 09:30:43 -07:00
Jaka Hudoklin 000c380a48 Emit deleted event on delete for embedsMany relations
Signed-off-by: Jaka Hudoklin <jakahudoklin@gmail.com>
2014-08-22 16:02:01 +02:00
Raymond Feng fcd8ed984c Make sure falsy value is kept for properties not predefined 2014-08-21 13:47:09 -07:00
Fabien Franzen 3f0380296a Fix side-effects of PR #237 - see #242 2014-08-21 10:44:55 +02:00
Raymond Feng 3875c561e0 Add ping() to test connections 2014-08-20 16:31:23 -07:00
Raymond Feng a43bed1f1b Merge branch 'feature/to-one-update' of github.com:fabien/loopback-datasource-juggler into fabien-feature/to-one-update 2014-08-20 14:30:38 -07:00
Raymond Feng f5839fb6ae Merge branch 'feature/embeds-one' of github.com:fabien/loopback-datasource-juggler into fabien-feature/embeds-one 2014-08-20 14:28:45 -07:00
Raymond Feng af329e3a66 Save the instance even the callback is not present 2014-08-20 14:22:47 -07:00
Fabien Franzen 20e5d3c01b Validate embedded models by default 2014-08-20 08:58:08 -07:00
Fabien Franzen 1ec5357a6c Implemented embedsOne 2014-08-20 08:58:08 -07:00
Fabien Franzen faed0510c1 Coerce embedded model types 2014-08-20 08:58:07 -07:00
Fabien Franzen 3b81b928fb Implement DAO unsetAttribute 2014-08-20 08:57:20 -07:00
Fabien Franzen af99a8d344 Implemented belongsTo update/destroy on scope 2014-08-20 16:46:54 +02:00
Fabien Franzen 12ebaf77f2 Implemented hasOne destroy() 2014-08-20 15:58:45 +02:00
Fabien Franzen 123b2558a1 Implemented hasOne update() 2014-08-20 15:54:47 +02:00
Fabien Franzen 1d5079d811 Implement update() on embedsOne scope 2014-08-20 15:37:40 +02:00
Fabien Franzen a446551a59 Fix relations for RDBMS connectors (mysql, postgresql)
- fix tests (explicit model/property definitions)
- fix include vs. RDBMS model strictness
2014-08-20 14:03:38 +02:00
Fabien Franzen 6f815526b0 Validate embedded models by default 2014-08-19 22:15:30 +02:00
Fabien Franzen 7c901af6d9 Implemented embedsOne 2014-08-19 22:10:35 +02:00
Fabien Franzen 2b262c04f6 Coerce embedded model types 2014-08-19 22:06:55 +02:00
Fabien Franzen c19aca906d Implement DAO unsetAttribute 2014-08-19 22:05:27 +02:00
Fabien Franzen dad8266837 Prevent failure with null in List toObject 2014-08-18 07:28:33 +02:00
Raymond Feng a6fe10e527 Merge pull request #226 from fabien/feature/multi-mixin
Add ability to apply a plugin multiple times from LDL
2014-08-17 22:18:05 -07:00
Fabien Franzen 291e7b2c74 Fix ModelDefinition toJSON bug 2014-08-17 18:01:52 +02:00
Fabien Franzen 39a728be84 Add ability to apply a plugin multiple times from LDL 2014-08-17 12:29:04 +02:00
Raymond Feng c3c2907248 Merge pull request #224 from fabien/fix/ldl-polymorphic
Properly handle LDL for polymorphic relations
2014-08-16 08:15:09 -07:00
Fabien Franzen b4b1c784dd HasMany exists should use internal findById
This limits the scope correctly, taking polymorphics into account.

(the foreign key check is actually obsolete I think)
2014-08-16 13:04:13 +02:00
Fabien Franzen 315d5c15c6 Tiny fix: obsolete i8n require 2014-08-16 11:07:48 +02:00
Fabien Franzen ad780604e1 Properly handle LDL for polymorphic relations 2014-08-16 11:03:16 +02:00
Raymond Feng 7f9108c6d2 Check null
See https://github.com/strongloop/loopback-datasource-juggler/issues/223
2014-08-15 23:30:23 -07:00
Fabien Franzen 3e300c1f35 Add strict flag to sortObjectsByIds
When true, any object not in the ids will be discarded and a subset
will be returned.
2014-08-15 19:47:12 +02:00
Fabien Franzen 9f1c5d9c37 Moved DataAccessObject.sortByIds to utils.js 2014-08-15 19:39:58 +02:00
Fabien Franzen 085bb94505 Allow partial list of ids for sortByIds 2014-08-15 19:39:58 +02:00
Raymond Feng 8743d75999 Merge pull request #222 from fabien/fix/relation-tests
Fixed duplicate code
2014-08-15 10:15:11 -07:00
Fabien Franzen 0e348b0333 Fixed duplicate code 2014-08-15 18:51:19 +02:00
Raymond Feng 03d94a86e5 Merge pull request #219 from fabien/fix/relation-tests
Fix  BelongsTo.prototype.create + remaining issues with new relation types
2014-08-15 09:46:27 -07:00
Fabien Franzen 6b0bbed780 Merge branch 'fix/relation-tests' of https://github.com/fabien/loopback-datasource-juggler into fix/relation-tests 2014-08-15 18:43:20 +02:00
Fabien Franzen 96a276a12b Refactor embedsMany - auto-save parent
With this change, saving an embedded model now correctly updates the
parent model.

Before, a separate `save()` call on the parent was required, contrary
to other relation types.
2014-08-15 18:40:33 +02:00
Raymond Feng 62db2155e4 Merge pull request #212 from offlinehacker/relations_count
add count to relations
2014-08-15 09:37:50 -07:00
Fabien Franzen 8193f402bb Refactor polymorphic relations, fix inverse #215
See #215 - when creating a related item through a the inverse of a
polymorphic HABTM relation,
the through-model was not created correctly. By refactoring the
specifics into the `polymorphic`
property of a RelationDefinition, it's now possible to handle this
correctly.
2014-08-15 18:35:31 +02:00
Fabien Franzen 78e2c9c9d4 Clarified tests, fixed BelongsTo.prototype.create
Added clarified test-case based on previous documentation example.

Fixed BelongsTo.prototype.create - although the foreignKey was set on
the model instance,
it was never actually persisted, unless you'd issue a separate call to
save the 'parent' model.
2014-08-15 18:35:31 +02:00
Raymond Feng d7900a8a21 Merge pull request #211 from fabien/fix/relationTypes
Fix relationTypes
2014-08-15 09:29:22 -07:00
Raymond Feng e22389967c Merge pull request #214 from fabien/fix/scope-order
Allow runtime override of scope/relation order query param
2014-08-15 09:25:17 -07:00
Raymond Feng da4482d1cf Merge pull request #213 from fabien/feature/scope-rel-methods
Implement scope.defineMethod/relation.defineMethod
2014-08-15 09:24:24 -07:00