Commit Graph

191 Commits

Author SHA1 Message Date
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 e46bd0cdb5 Fix hasOne remoting 2015-01-29 23:26:11 -08:00
Fabien Franzen a08ef823be Supply target to applyProperties function 2015-01-26 19:09:29 +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 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
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
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
Pandaiolo 9eaeb9e399 Fix HasOne PK on modelFrom instead of modelTo 2014-10-29 12:06:05 +01: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
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
Fabien Franzen 610866bd7c Extract mergeQuery and setScopeValuesFromWhere
Related to #274 - in preparation of default scope
2014-10-09 18:13:40 +02:00
Fabien Franzen 7f155966ab Fix to handle new isNewRecord implementation 2014-09-13 00:03:08 +02: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 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 433b89a78a embedsMany - implement sync scope getter 2014-09-04 21:51:59 +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
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
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 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
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
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 170dc661f4 Fix error messages, should be lowercase 2014-08-29 21:30:42 +02:00
Fabien Franzen b27fd6527e Use the correct dataSource for modelFrom/modelTo 2014-08-22 21:38:28 +02: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 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 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
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 ad780604e1 Properly handle LDL for polymorphic relations 2014-08-16 11:03:16 +02:00
Fabien Franzen 0e348b0333 Fixed duplicate code 2014-08-15 18:51:19 +02: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
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 da4482d1cf Merge pull request #213 from fabien/feature/scope-rel-methods
Implement scope.defineMethod/relation.defineMethod
2014-08-15 09:24:24 -07:00
Fabien Franzen c2f9ee381c Implement embedded.destroy() integration 2014-08-15 15:24:00 +02:00
Fabien Franzen 21801058c9 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 15:12:02 +02:00
Fabien Franzen c3c2c85ce4 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 12:55:10 +02:00
Fabien Franzen 35850f6632 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 11:28:25 +02:00
Fabien Franzen cd3ad32bb7 Fix formatting 2014-08-14 20:12:17 +02:00
Fabien Franzen 7d847f25dc Fix scopeMethods closure issue 2014-08-14 20:12:17 +02:00
Fabien Franzen a67759dcbf Refactored embedsMany (relationName vs. propertyName) 2014-08-14 20:12:16 +02:00
Fabien Franzen 807a6aaf3f Refactor modelTo logic into lookupModelTo 2014-08-14 19:43:30 +02:00
Fabien Franzen 710ad35b39 Implement scope.defineMethod/relation.defineMethod 2014-08-13 11:28:23 +02:00
Fabien Franzen 93fab448bc Tiny fix: use setAttributes 2014-08-11 13:03:51 +02:00
Raymond Feng 3d5ec63c99 Pass options into scope 2014-08-08 09:25:49 -07:00
Fabien Franzen ef65ffee48 Changed normalization api - enabled hasOne remoting 2014-08-01 11:24:41 +02:00
Fabien Franzen 090c738bb5 Correctly handle remoting of scope methods 2014-07-30 17:30:21 +02:00
Fabien Franzen af0ca5b108 Handle remoting of custom scope methods 2014-07-30 16:46:05 +02:00
Fabien Franzen e38c92af87 ReferencesMany fixes after LB integration tests 2014-07-30 15:01:55 +02:00
Fabien Franzen 5cee6a4b79 Fixed embedsMany after LB integration 2014-07-30 13:22:20 +02:00
Raymond Feng 7a9b64f1bf Fix the test failure for mongodb 2014-07-29 22:19:52 -07:00
Fabien Franzen e888b8cff9 Allow custom scopeMethods option (obj/fn) for relation scopes 2014-07-29 22:59:44 +02:00
Fabien Franzen 06f2b32c21 Renamed EmbedsMany 'reference' option to 'belongsTo' 2014-07-29 21:56:59 +02:00
Fabien Franzen 1782b439f1 Implemented referencesMany 2014-07-29 21:46:12 +02:00
Fabien Franzen 60fd39d311 Added option: reference to enable embedsMany add/remove 2014-07-29 17:43:30 +02:00
Fabien Franzen b18384459a Implemented findByIds 2014-07-29 15:01:47 +02:00
Fabien Franzen 13cee9502c Tests for polymorphic embedsMany 2014-07-29 13:57:49 +02:00
Fabien Franzen da303b72a5 Implemented more complex scenaro: embedsMany + relations
The test case will denormalize data into the embedded object,
and re-use the actual related object id as its own id.
2014-07-29 12:02:52 +02:00
Fabien Franzen 6ed7a0a5f2 Convenience embedsMany accessors: at(idx), get(id), set(id, data) 2014-07-29 10:51:33 +02:00