All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Grouping criteria: parsing improved to ignore commas inside parentheses, allowing for more complex grouping criteria (e.g. group_by='custom_function(arg1,arg2),another_value'). Previous implementation would split the criteria at the comma inside the parentheses, leading to inability to pass the function call. (PR #51)
- Deserializer: relationship id(s) helpers: introduced
relationship_idandrelationship_idsmethods inDeserializerto fetch relationship id(s) by association name from request payload. (PR #49)
- Extra fields preloading in main query: Support preloading associations for
extra_fieldsfor main and sideloaded records. Addspreloadoption toextra_attributein resource classes. Example:extra_attribute :full_post_title, :string, preload: :author. (PR #45) - Extra fields preloading in separate query: Collect IDs from the main query result and run a single separate query to load and calculate
extra_fieldsvalues for all records. does not support preloading for deep sideloads. (PR #47)
- Graphiti Compatibility: Added support for Graphiti versions up to 1.8.x, fixing previously broken sideloading behavior.
- Serializer: Resolved an issue where polymorphic resources were not functioning correctly in serializers.
- Deep sideloading: introduced Include scoping class to support deep sideloading using single query (e.g. include='author.posts')
- Deep sorting: added SortNormalizer to support sorting by deep sideloaded resource's attribute (e.g. sort='author.posts.title')
- Links control: Control the links(pagination and resource) in response via request query params (pagination_links=true|false, links=true|false)
1.0.0 - 2025-03-18
- MRI Support: Introduced compatibility with MRI (Matz's Ruby Interpreter), expanding the gem's usability beyond JRuby (#38).
- Documentation Updates: Expanded the README to provide clearer guidance on gem usage and integration (#38).
- Sideloading Workflow: Enhanced scoping mechanisms and added support for eager loading associations to improve data retrieval efficiency and flexibility (#38).
- Resource Class: Instead of modifying the
Graphiti::Resourceclass, we now defineGraphiti::ActiveGraph::Resource,
which must be inherited in all resource classes to enable ActiveGraph support (#38).
Note: For details on changes prior to version 1.0.0, please refer to the CHANGELOG_PRE_1.0.0.md file.