{"action":"published","release":{"url":"https://api.github.com/repos/limoncello-php/framework/releases/10137428","assets_url":"https://api.github.com/repos/limoncello-php/framework/releases/10137428/assets","upload_url":"https://uploads.github.com/repos/limoncello-php/framework/releases/10137428/assets{?name,label}","html_url":"https://github.com/limoncello-php/framework/releases/tag/0.9.0","id":10137428,"tag_name":"0.9.0","target_commitish":"develop","name":"Rolling Beta","draft":false,"author":{"login":"neomerx","id":10420662,"avatar_url":"https://avatars0.githubusercontent.com/u/10420662?v=4","gravatar_id":"","url":"https://api.github.com/users/neomerx","html_url":"https://github.com/neomerx","followers_url":"https://api.github.com/users/neomerx/followers","following_url":"https://api.github.com/users/neomerx/following{/other_user}","gists_url":"https://api.github.com/users/neomerx/gists{/gist_id}","starred_url":"https://api.github.com/users/neomerx/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/neomerx/subscriptions","organizations_url":"https://api.github.com/users/neomerx/orgs","repos_url":"https://api.github.com/users/neomerx/repos","events_url":"https://api.github.com/users/neomerx/events{/privacy}","received_events_url":"https://api.github.com/users/neomerx/received_events","type":"User","site_admin":false},"prerelease":true,"created_at":"2018-05-03T23:37:12Z","published_at":"2018-05-04T00:37:55Z","assets":[],"tarball_url":"https://api.github.com/repos/limoncello-php/framework/tarball/0.9.0","zipball_url":"https://api.github.com/repos/limoncello-php/framework/zipball/0.9.0","body":"Some compatible improvements to the project. The main focus and the source for breaking changes were changing validation for inputs (forms and JSON API queries and data).\r\n\r\n- `Limoncello\\Flute\\Contracts\\Validation\\FormRuleSetInterface` renamed to `Limoncello\\Flute\\Contracts\\Validation\\FormRulesInterface`\r\n- `Limoncello\\Flute\\Contracts\\Validation\\JsonApiRuleSetInterface` renamed to `Limoncello\\Flute\\Contracts\\Validation\\JsonApiDataRulesInterface`\r\n- Controller class constants `ON_CREATE_VALIDATION_RULES_SET_CLASS` and `ON_UPDATE_VALIDATION_RULES_SET_CLASS` were renamed to `ON_CREATE_DATA_VALIDATION_RULES_CLASS` and `ON_UPDATE_DATA_VALIDATION_RULES_CLASS`.\r\n- Instead of `Limoncello\\Flute\\Contracts\\Validation\\QueryRuleSetInterface` interface `Limoncello\\Flute\\Contracts\\Validation\\JsonApiQueryRulesInterface` should be used. The new interface provides new methods for efficient validation for JSON API query parameters (filters, field sets, sorts, includes and paging). A simple start could be extend/inherit `Limoncello\\Flute\\Validation\\JsonApi\\DefaultQueryValidationRules` which forbids filters, field sets, sorts and includes but allows pagination.\r\n- Two new controller class constants were added `ON_INDEX_QUERY_VALIDATION_RULES_CLASS` and `ON_READ_QUERY_VALIDATION_RULES_CLASS` each of them should point to a class that implements `JsonApiQueryRulesInterface`. The rules would be used for query validation on `index` and `read` actions.\r\n\r\nController methods `configureOnXXXParser` which were used for configuring validation of JSON API queries are deprecated. All the functionality (and more) could be done in rules that implement `JsonApiQueryRulesInterface`. \r\n\r\nController method `readRelationshipWithClosure` was replaced with `defaultReadRelationshipWithClosure`. If you only need data from API taken via API method `readRelationship($index, $modelRelationhsipName)` use controller method `readRelationship`. If you need some custom behaviour then `defaultReadRelationshipWithClosure` (controller's `readRelationship` will be an example how to work with it).\r\n\r\nClass `\\Limoncello\\Flute\\Http\\BaseController` was refactored and now look super simple and easy. All helper methods were moved to `\\Limoncello\\Flute\\Http\\Traits\\DefaultControllerMethodsTrait`. If you are not happy with the default controller handlers or you do not want to inherit from `BaseController` you can very easily add your own handlers combined with methods from `DefaultControllerMethodsTrait`.\r\n\r\nRoute helpers `\\Limoncello\\Flute\\Http\\Traits\\FluteRoutesTrait::resource` and `\\Limoncello\\Flute\\Http\\Traits\\FluteRoutesTrait::controller` were renamed to `\\Limoncello\\Flute\\Http\\Traits\\FluteRoutesTrait::apiController` and `\\Limoncello\\Flute\\Http\\Traits\\FluteRoutesTrait::webController`.\r\n\r\nInterface `\\Limoncello\\Flute\\Contracts\\Http\\ControllerInterface` was split into `\\Limoncello\\Flute\\Contracts\\Http\\JsonApiControllerInterface` and `\\Limoncello\\Flute\\Contracts\\Http\\WebControllerInterface` as they have similar but slightely different methods."}}
{"actor":{"display_login":"neomerx"}}