Weave Code
Code Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Crud Checker Laravel Package

binzram/crud-checker

View on GitHub
Deep Wiki
Context7

Getting Started

Minimal Setup

  1. Installation

    composer require binzram/crud-checker
    

    Add the service provider to config/app.php:

    'providers' => [
        // ...
        Binzram\CrudChecker\CrudCheckerServiceProvider::class,
    ],
    
  2. Basic Usage Register a model to check CRUD operations:

    use Binzram\CrudChecker\CrudChecker;
    
    $checker = app(CrudChecker::class);
    $checker->registerModel(\App\Models\User::class);
    
  3. First Use Case Enable logging in config/crud-checker.php:

    'enabled' => env('CRUD_CHECKER_ENABLED', false),
    'log_path' => storage_path('logs/crud-checker.log'),
    

    Set CRUD_CHECKER_ENABLED=true in .env and trigger CRUD operations (e.g., User::create()). Check the log file for recorded operations.


Implementation Patterns

Workflow Integration

  1. Model Registration Register models in a service provider or boot method:

    public function boot()
    {
        $checker = app(CrudChecker::class);
        $checker->registerModel(\App\Models\Post::class);
        $checker->registerModel(\App\Models\Comment::class);
    }
    
  2. Conditional Logging Use middleware to toggle logging dynamically:

    $checker->setEnabled(request()->has('debug_crud'));
    
  3. Event-Based Hooks Listen for CRUD operations via events (if the package supports it):

    Event::listen('crud-checker.recorded', function ($event) {
        // Custom logic for recorded operations
    });
    
  4. API/Controller Layer Log CRUD operations in controllers:

    public function store(Request $request)
    {
        $checker = app(CrudChecker::class);
        $checker->logOperation('create', User::class, $request->all());
        return User::create($request->all());
    }
    
  5. Seeding/Testing Disable logging during tests:

    $checker->setEnabled(false);
    

Gotchas and Tips

Pitfalls

  1. Performance Overhead

    • Logging every CRUD operation may slow down production. Use setEnabled(false) in live environments.
    • Avoid registering models in bulk if not needed (e.g., disable for App\Models\SystemLog).
  2. Log File Management

    • Ensure storage_path('logs/crud-checker.log') is writable.
    • Rotate logs manually or integrate with Laravel’s log rotation.
  3. Model Polymorphism

    • If using polymorphic relationships, explicitly register base models (e.g., Model::class) to avoid duplicates.
  4. Sensitive Data

    • Logged data may include sensitive fields (e.g., passwords). Sanitize payloads:
      $checker->logOperation('update', User::class, array_except($data, ['password']));
      
  5. Namespace Conflicts

    • If using namespaced models (e.g., App\Models\User), ensure the FQCN is used:
      $checker->registerModel(\App\Models\User::class); // Not 'User'
      

Tips

  1. Debugging

    • Check logs for malformed entries (e.g., missing model classes). Ensure registerModel() is called before operations.
  2. Extension Points

    • Override the logger by binding a custom Psr\Log\LoggerInterface:
      $this->app->bind(\Psr\Log\LoggerInterface::class, function () {
          return new CustomLogger();
      });
      
  3. Custom Formatting

    • Extend the logger to format entries (e.g., JSON):
      $checker->setLogger(new JsonLogger());
      
  4. Environment-Specific Config

    • Use config/crud-checker.php to toggle logging per environment:
      'enabled' => app()->environment('local'),
      
  5. Testing

    • Mock the checker in tests:
      $this->app->instance(CrudChecker::class, Mockery::mock(CrudChecker::class));
      
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
terminal42/code-quality-tools
codifyo/ts-generator-bundle
andydefer/laravel-cluster
testo/fiber
mintobit/jobqueue
a4sex/maintenance-bundle
a4sex/entity-date-update
a4sex/client-identifier
a4sex/base-utilites
a4sex/key-value-storage
a4sex/micro-status
chilldev/dependency-injection-extra
datinglibre/datinglibre-app-api
biberltd/corebundle
bricre/symfony-bundle-test
biberltd/logbundle
dominium/http-adapter-bundle
dominium/google-analytics
a4sex/auto-clean-entity
christhompsontldr/laravel-inky