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

Cleaner Bundle Laravel Package

adgoal/cleaner-bundle

Symfony bundle integrating lamoda/cleaner. Configure DB and custom storage cleaners via YAML, including transactional mode, parameters, and multi-query setups. Provides a console command to run all cleaners or a selected one (cleaner:clear).

View on GitHub
Deep Wiki
Context7

Getting Started

Minimal Steps

  1. Installation

    composer require adgoal/cleaner-bundle
    

    Register the bundle in config/bundles.php:

    Lamoda\CleanerBundle\LamodaCleanerBundle::class => ['all' => true],
    
  2. Basic Configuration Define a cleaning rule in config/packages/lamoda_cleaner.yaml:

    lamoda_cleaner:
        db:
            queue:
                query: "DELETE FROM queue WHERE created_at < NOW() - (:interval || ' days')::interval"
                parameters:
                    interval: 30
    
  3. First Use Case Run the cleaner via CLI:

    php bin/console cleaner:run queue
    

Implementation Patterns

Usage Patterns

  1. Database Cleaning Define queries for tables requiring cleanup (e.g., logs, queues, temp tables):

    lamoda_cleaner:
        db:
            logs:
                query: "DELETE FROM logs WHERE created_at < NOW() - (:interval || ' days')::interval"
                parameters:
                    interval: 7
    

    Run with:

    php bin/console cleaner:run logs
    
  2. Multi-Table Cleanup Use multi_tables for batch operations:

    lamoda_cleaner:
        db:
            multi_tables:
                query: "DELETE FROM {table} WHERE created_at < NOW() - (:interval || ' days')::interval"
                parameters:
                    interval: 30
                tables: ["queue", "temp_data"]
    

    Run with:

    php bin/console cleaner:run multi_tables
    
  3. Custom Cleaners Extend the bundle by creating custom cleaners (e.g., for files or external APIs):

    // src/Cleaner/CustomCleaner.php
    namespace App\Cleaner;
    
    use Lamoda\Cleaner\CleanerInterface;
    
    class CustomCleaner implements CleanerInterface {
        public function clean(): void {
            // Custom logic (e.g., delete old files)
        }
    }
    

    Register in services.yaml:

    services:
        App\Cleaner\CustomCleaner:
            tags: [lamoda_cleaner.cleaner]
    

    Run with:

    php bin/console cleaner:run custom_cleaner
    
  4. Scheduled Cleanup Use Symfony’s scheduler (e.g., with cron) to automate cleanup:

    # Example crontab entry (run daily at 2 AM)
    0 2 * * * php bin/console cleaner:run queue
    

Gotchas and Tips

Pitfalls

  1. Transaction Handling

    • By default, transactional: true (for DB cleaners). Disable if cleanup logic requires intermediate commits:
      lamoda_cleaner:
          db:
              queue:
                  transactional: false
      
  2. Parameter Validation

    • Ensure parameters in YAML are correctly typed (e.g., interval as integer or string).
    • Invalid types may cause SQL syntax errors or runtime exceptions.
  3. Table Locking

    • Large deletions may lock tables. Test in staging first or run during low-traffic periods.
  4. Debugging Queries

    • Enable Symfony’s debug toolbar or log queries to verify SQL:
      # config/packages/dev/lamoda_cleaner.yaml
      lamoda_cleaner:
          debug: true
      
  5. Custom Cleaner Registration

    • Forgetting to tag services with lamoda_cleaner.cleaner will make them undiscoverable by the CLI.

Tips

  1. Dry Runs Use --dry-run to preview deletions without executing:

    php bin/console cleaner:run queue --dry-run
    
  2. Logging Add logging to track cleanup operations:

    lamoda_cleaner:
        db:
            queue:
                log: true  # Logs deletions to Symfony's logger
    
  3. Environment-Specific Configs Override configs per environment (e.g., config/packages/dev/lamoda_cleaner.yaml):

    lamoda_cleaner:
        db:
            queue:
                interval: 1  # Shorter interval in dev
    
  4. Backup Before Cleaning Always back up critical tables before running deletions, especially in production.

  5. Performance Tuning

    • For large tables, add LIMIT to queries to avoid long-running transactions:
      lamoda_cleaner:
          db:
              queue:
                  query: "DELETE FROM queue WHERE created_at < NOW() - (:interval || ' days')::interval LIMIT 1000"
      
    • Use batch processing for very large datasets.
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.
emuniq/filament-browser-notifications
syriable/filament-translator
hungnm28/livewire-form
wenprise/eloquent
crudly/encrypted
fadion/bouncy
cuci/prototurk-sdk
gos/pubsub-router-bundle
cuci/prototurk-sdk-symfony
clementtalleu/easyadmin-markdown-bundle
codeflextech/permission-manager
karnoweb/livewire-datepicker
sayedenam/sayed-dashboard
milito/query-filter
apiboxsym/user-bundle
apiboxsym/health-check-bundle
jayeshmepani/jpl-moshier-ephemeris-php
elnasnato/laraliveui
labrodev/rest-sdk
sampaui/sampaui