Skip to content

Release: Filterable v2.0.0 with Profiler, Aliases, Auto-Binding & Laravel 12 Support#7

Merged
kettasoft merged 34 commits intomasterfrom
v2.0.0
Aug 17, 2025
Merged

Release: Filterable v2.0.0 with Profiler, Aliases, Auto-Binding & Laravel 12 Support#7
kettasoft merged 34 commits intomasterfrom
v2.0.0

Conversation

@kettasoft
Copy link
Owner

Summary

This pull request merges the 2.0.0 branch into master, introducing a major new version of Filterable with extensive new features, enhancements, and breaking changes.

Key Changes

  • Laravel 9, 10, 11, 12 support
  • Filter Aliases: Short names for filter classes
  • Auto Binding: Models can define $filterable for automatic filter class resolution
  • Automatic filter() Macro Registration
  • Profiler: Query profiler for Filterable queries
  • New API for Through Callbacks: through() method for query callbacks
  • Conditional Logic: when() and unless() methods
  • Invoker Wrapper: Extra control with before/after/onError hooks

Breaking Changes

  • Engine name corrected to invokable
  • Trait inclusion moved to auto-registration
  • Aliases and auto-discovery changes

Other Updates

  • Updated configuration file
  • New and improved documentation
  • Support for new dependencies
  • Internal refactors and enhanced test coverage

For more details, see the full comparison between master and v2.0.0 branches.

Abdalrhman Emad Saad and others added 30 commits July 28, 2025 12:11
…y in model

Introduced automatic resolution of the filter class by checking the `$filterable` property in the Eloquent model. If the property is not defined and no filter is provided, a `FilterClassNotResolvedException` is thrown to notify the developer.
Add support for automatic filter binding via $filterable property in Eloquent models
…ing logic

- Introduced `when(bool $condition, callable $callback)` method to Filterable.
- Enables conditional modification of filter instances in a chainable, expressive way.
- Supports nested usage and enhances code clarity.
- Added full test coverage for true/false conditions and nested scenarios.
- Introduced through() method in Filterable to accept an array of closures
- Each closure is applied sequentially to the query builder
- Validates input to ensure only callables are accepted
- Added test cases to verify correct and incorrect usage
feat(filterable): support through() method to apply custom builder callbacks
- Each engine now includes a getEngineName method to retrieve its unique name.
- This enables better debugging, logging, and identification of the active filtering engine.
Add Invoker execution control feature
Add Serializable support to Invoker
Abdalrhman Emad Saad and others added 4 commits August 17, 2025 20:31
- Introduced a configurable query profiler to the Filterable package.
- Added profiler configuration options to `config/filterable.php`.
- Implemented `Profiler`, event dispatcher, and storage contracts (file/database).
- Registered profiler services in `FilterableServiceProvider`.
- Added migration for profiler database table.
- Created documentation and feature tests for profiler events (slow/duplicate queries).
- Updated Invoker to trigger profiler when enabled.
Add Query Profiler Core: Config, Storage, Events, and Tests
@kettasoft kettasoft merged commit 9588d70 into master Aug 17, 2025
1 check passed
@kettasoft kettasoft deleted the v2.0.0 branch November 18, 2025 11:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant