{"push_id":559374197,"size":7,"distinct_size":3,"ref":"refs/heads/feature/intent-hooks","head":"1fd6eff10fae7e5afd5d4499d97e177d5857fdc7","before":"36dc948c2ddfd1a609b04d099f9685df3427cef4","commits":[{"sha":"a08ef823bec4b911a6dd9e58c9d167a114575780","author":{"email":"59bd0a3ff43b32849b319e645d4798d8a5d1e889@atelierfabien.be","name":"Fabien Franzen"},"message":"Supply target to applyProperties function","distinct":false,"url":"https://api.github.com/repos/strongloop/loopback-datasource-juggler/commits/a08ef823bec4b911a6dd9e58c9d167a114575780"},{"sha":"70833b2a2b3794ea208b9273662609d6a60d6fce","author":{"email":"a382bd8ebb67de26f1f88a847c793c4f43147696@gmail.com","name":"Raymond Feng"},"message":"Merge pull request #407 from fabien/fix/apply-props\n\nSupply target to applyProperties function","distinct":false,"url":"https://api.github.com/repos/strongloop/loopback-datasource-juggler/commits/70833b2a2b3794ea208b9273662609d6a60d6fce"},{"sha":"28f3f5d9f8eaa99fce73f12debb897d5e45f5287","author":{"email":"474ba67bdb289c6263b36dfd8a7bed6c85b04943@billingham.net","name":"James Billingham"},"message":"Fixed nullCheck in validations to correct behavior when dealing with undefined attributes","distinct":false,"url":"https://api.github.com/repos/strongloop/loopback-datasource-juggler/commits/28f3f5d9f8eaa99fce73f12debb897d5e45f5287"},{"sha":"577def97f8e98c9c328efdc9fd1bd1b45566fe93","author":{"email":"a382bd8ebb67de26f1f88a847c793c4f43147696@gmail.com","name":"Raymond Feng"},"message":"Merge pull request #409 from billinghamj/master\n\nFixed nullCheck in validations for undefined attributes","distinct":false,"url":"https://api.github.com/repos/strongloop/loopback-datasource-juggler/commits/577def97f8e98c9c328efdc9fd1bd1b45566fe93"},{"sha":"f9b0ac482c4833c7fbe10f970a03f3b77486e014","author":{"email":"7dd100fb2e706e334fdcc7c621f82de566dccf77@strongloop.com","name":"Miroslav Bajtoš"},"message":"Upgrade `should` to the latest 1.x version","distinct":true,"url":"https://api.github.com/repos/strongloop/loopback-datasource-juggler/commits/f9b0ac482c4833c7fbe10f970a03f3b77486e014"},{"sha":"b3d07ebbe82564a6c64aaa7bbb796ecd2a9843a3","author":{"email":"7dd100fb2e706e334fdcc7c621f82de566dccf77@strongloop.com","name":"Miroslav Bajtoš"},"message":"ModelBaseClass: implement async observe/notify\n\nImplement infrastructure for intent-based hooks.","distinct":true,"url":"https://api.github.com/repos/strongloop/loopback-datasource-juggler/commits/b3d07ebbe82564a6c64aaa7bbb796ecd2a9843a3"},{"sha":"1fd6eff10fae7e5afd5d4499d97e177d5857fdc7","author":{"email":"7dd100fb2e706e334fdcc7c621f82de566dccf77@strongloop.com","name":"Miroslav Bajtoš"},"message":"Intent-based hooks for persistence\n\nThis patch introduces a new API for \"intent-based\" hooks. These hooks\nare not tied to a particular method (e.g. \"find\" or \"update\"). Instead,\nthey are triggered from all methods that execute a particular \"intent\".\n\nThe consumer API is very simple, there is a new method\nModel.observe(name, observer), where the observer is function\nobserver(context, callback).\n\nObservers are inherited by child models and it is possible to register\nmultiple observers for the same hook.\n\nList of hooks:\n\n - query\n - before save\n - after save\n - after delete","distinct":true,"url":"https://api.github.com/repos/strongloop/loopback-datasource-juggler/commits/1fd6eff10fae7e5afd5d4499d97e177d5857fdc7"}]}