Commit Graph

1338 Commits

Author SHA1 Message Date
Miroslav Bajtoš f15b4e2c86 Implement KeyValue API and memory connector
Models attached to a KeyValue connector get the following *static*
methods:

    Color.set(key, value);
    Color.set(key, value, ttl);
    Color.set(key, value, { ttl: ttl });

    Color.get(key);

    Color.expire(key, ttl);
2016-08-08 10:15:34 +02:00
Richard Pringle 0b62dd94ea Disallow bulk updateOrCreate. 2016-08-05 11:54:06 +02:00
Amir-61 c2a683bca4 Merge pull request #1007 from horiaradu/master
Optimize related model queries
2016-08-03 16:24:32 -04:00
Amir Jafarian a5429dc026 Update globalization 2016-08-03 14:48:35 -04:00
Amir Jafarian f2f9b4a6f8 Use g.f instead of utils.format 2016-08-03 10:47:40 -04:00
Horia Radu c3f62991c3 Optimize related model queries
No longer query for the related/included model when no results are
obtained in the first query.

fix:
https://github.com/strongloop/loopback-datasource-juggler/issues/1006
2016-08-01 20:23:08 +03:00
Amir Jafarian 4ce5b5d3a0 Support for globalization 2016-07-28 15:20:18 -04:00
Rand McKinney f1ed1ee023 Update include.js
Change doc comments to remove spurious API doc entry per #1008
2016-07-25 08:48:47 -07:00
Amir-61 20d8047198 Merge pull request #1009 from strongloop/declare_definition_in_destroy
Declare `definition`
2016-07-23 00:21:31 -04:00
Amir Jafarian 2143502a9d Remove unused variables in model.js 2016-07-22 17:23:09 -04:00
Amir Jafarian 8d4c577032 Declare `definition`
Declare `definition` in `BelongsTo.prototype.destroy`
2016-07-22 15:44:53 -04:00
Miroslav Bajtoš 699e0587d1 Ensure stable order of items in DAO.find()
When post-processing result of find operation, use "async.map"
instead of "async.each + array.push" to ensure the order of items
is preserved.
2016-07-13 14:55:49 +02:00
Rand McKinney 45e14af4a9 Update validations.js
Fix API doc per https://github.com/strongloop/loopback/issues/2472
2016-06-29 16:13:44 -07:00
gunjpan 8076be2db1 Remove DataSource.registerType()
Result of compat flag cleanup.
- Current implementation has a wrapper
DataSource.registerType() for
ModelBuilder.registerType(). This removes
the wrapper to encourage use of original
method
2016-06-28 14:45:42 -04:00
RobinBiondi fbe58f7cf8 give options to validators #984 2016-06-24 14:44:43 -07:00
Gunjan Pandya e0a68289c5 Merge pull request #947 from strongloop/update-errormsg
[SEMVER-MAJOR] Throw Error for property names with dots
2016-06-24 16:50:00 -04:00
Amir-61 73bb418719 Merge pull request #960 from strongloop/fix/connection-err-msg
Update datasource.js
2016-06-17 11:29:26 -04:00
gunjpan 8117b0403f Throw Error for property names with dots
Result of Compat Flags Clenup.
Throws an error for property names with dots, instead
of a deprecation warning.
2016-06-09 17:50:59 -04:00
Amir Jafarian 7a8803cb38 Give warning if PK is changed in hooks
* Give warning if PK is changed in `before save` and `loaded`
 operation hooks for replaceById
2016-06-08 11:56:19 -04:00
Candy 3daca1e960 Remove model events 2016-06-08 10:27:05 -04:00
Dimitris Halatsis ea2266e453 Persist changes on parent for embedsOne
Allow direct save of changes on embedded model to be persisted on
parent document.

    Person.embedsOne(Address);
    Person.findById(someId)
      .then(function(p){
        var address = p.addressItem();
        address.street = 'new street'
        // This will now persist changes on parent document
        return address.save();
      })

[forward-port of #949]
2016-06-07 17:24:59 +02:00
Amir Jafarian 8f2077e344 Fix 2016-06-03 18:00:21 -04:00
Ritchie Martori 293a22fd31 Update datasource.js
Return a real `Error` message for the default `ping()` method.
2016-06-02 14:02:06 -07:00
Amir Jafarian cae44f0458 Fix error message
*Fix error message when PK is changed in `replaceById`
2016-06-01 16:16:35 -04:00
Amir-61 8f347fbacb Merge pull request #954 from strongloop/callback_err_from_connector_UPSERT
Retun err for UPSERT if the connector returns err
2016-06-01 15:51:35 -04:00
Dimitris Halatsis b7ba73f1b1 ModelBuilder: add new setting strictEmbeddedModels
The setting controls the strict mode used for embedded property types,
for example the type of "address" property in this model definition:

    modelBuilder.define('TestEmbedded', {
      name: 'string',
      address: {
        street: 'string',
      },
    });
2016-06-01 13:12:50 +02:00
Amir Jafarian 82546fdf47 Retun err for UPSERT if the connector returns err 2016-05-31 22:17:23 -04:00
Alex Pitigoi 423db34bf3 fix error handling when applying undefined mixins 2016-05-31 12:24:04 -04:00
Amir Jafarian d9a3f6226a Fix incompatibility between different connectors
* Fix incompatibility for replace methods between different connectors.
2016-05-27 13:45:24 -04:00
Sequoia McDowell ae7a5df47b Document promise support for DAO::find
It was previously completely undocumented. There are additional methods that add promises but I figure accurately documenting some is better than none. :)
2016-05-11 09:58:22 -04:00
Miroslav Bajtoš 8ad53a4c0e DAO.create: don't return the instance
Simplify DataAccessObject.create() and stop returning the
instance/array of instances. Users should always use callback (or
returned promise) to get the instance(s) created.
2016-04-29 14:16:06 +02:00
Miroslav Bajtoš 9bde8f859b Implement operation hooks for EmbedsMany methods
create() triggers
 - before save
 - after save

updateById() triggers
 - before save
 - after save

destroy() triggers
 - before delete
 - after delete

The implementation here is intentionally left with less features
than the regular DAO methods provide, the goal is to get a partial
(but still useful!) version released soon.

Limitations:

 - `before save` & `after save` hooks don't provide `ctx.isNewInstance`
 - async validations are not supported yet
 - `persist` and `loaded` hooks are not triggered at all

 - `before delete` hook does not provide `ctx.where` property and
    it's not possible to change the outcome of `destroy()` using this
    hook. Note that regular DAO does support this.

 - updating embedded instances triggers update of the parent (owning)
   model, which is correct and expected. However, the context provided
   by `before save` and `after save` hooks on the parent model is sort of
   arbitrary and may include wrong/extra data. The same probably applies
   to the scenario when deleting embedded instances triggers update of
   the parent model.
2016-04-27 11:04:15 +02:00
Miroslav Bajtoš b86615e2b7 Implement operation hooks for EmbedsOne methods
create() triggers
 - before save
 - after save

udpate() triggers
 - before save
 - after save

destroy() triggers
 - before delete
 - after delete

The implementation here is intentionally left with less features
than the regular DAO methods provide, the goal is to get a partial
(but still useful!) version released soon.
2016-04-20 09:36:12 +02:00
Miroslav Bajtoš c7f34c3452 eslint config 2.0 + remove extra empty lines
Upgrade eslint-config-loopback to ^2.0.0.

Remove extra empty lines to make `npm run lint` pass again.
2016-04-19 16:11:43 +02:00
Amir Jafarian 4e6351b856 Fix `forceId` check for `replaceById` 2016-04-14 15:05:56 -04:00
Amir Jafarian e9afb46eda Fix `notify` bugs for `find` 2016-04-13 13:34:51 -04:00
Amir Jafarian 4bb284bb60 Define `patch` aliases
*Define `patchOrCreate` as an alias for `updateOrCreate`
*Define `PatchAttributes` as an alias for `updateAttributes`
2016-04-12 13:40:01 -04:00
Simon Ho 85ed753609 Merge pull request #786 from strongloop/feature/fix-610
Partition by foreign key for pagination
2016-04-06 14:01:08 -07:00
Raymond Feng 84da11f98e Partition by foreign key for pagination
See https://github.com/strongloop/loopback-datasource-juggler/issues/610
2016-04-05 17:21:48 -07:00
Raymond Feng daaf5e381a Merge branch 'discover-hang' of https://github.com/TorchlightSoftware/loopback-datasource-juggler into TorchlightSoftware-discover-hang
# Conflicts:
#	lib/datasource.js
#	test/discovery.test.js
2016-04-05 16:18:25 -07:00
Raymond Feng e321bafdf9 Fix style errors 2016-04-05 16:11:25 -07:00
Raymond Feng b7543e9402 Merge pull request #860 from horiaradu/master
fix nin support for in memory datasource
2016-04-05 15:42:07 -07:00
Miroslav Bajtoš 27c6279d6c fix remaining eslint issues 2016-04-05 15:25:34 +02:00
Miroslav Bajtoš 39e04a1756 eslint --fix 2016-04-05 15:25:34 +02:00
Ryan Graham c467b43c38 Insert copyright headers 2016-04-04 18:14:03 -07:00
bitmage 57afba8c51 support custom field settings under the connector's namespace 2016-03-16 09:17:55 -07:00
gunjpan 6db59cba6f Update error message for missing connector 2016-03-15 17:01:37 -04:00
Horia Radu a3ae44aca0 fix nin support for in memory datasource 2016-02-27 10:27:09 +02:00
Miroslav Bajtoš 9dcf30efe9 Improve error message on connector init error 2016-02-26 14:00:24 +01:00
Candy 686ce5bae3 Fix missing connector error msg for db2, cloudant 2016-02-09 16:19:57 -05:00