{"id":13518669,"url":"https://github.com/oliverde8/phpEtlBundle","last_synced_at":"2025-03-31T10:32:09.630Z","repository":{"id":45322295,"uuid":"364381830","full_name":"oliverde8/phpEtlBundle","owner":"oliverde8","description":"This bundle allows the execution of PHP etl chains in symfony with an interface to see execution history","archived":false,"fork":false,"pushed_at":"2024-10-24T13:16:03.000Z","size":231,"stargazers_count":5,"open_issues_count":3,"forks_count":2,"subscribers_count":2,"default_branch":"main","last_synced_at":"2024-10-25T04:15:29.110Z","etag":null,"topics":["bundle","php","symfony","symfony-bundle"],"latest_commit_sha":null,"homepage":"","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/oliverde8.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"Security/EtlExecutionVoter.php","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-05-04T20:46:04.000Z","updated_at":"2024-10-24T13:15:28.000Z","dependencies_parsed_at":"2024-11-02T00:30:47.776Z","dependency_job_id":"1565c94a-8f16-420a-a1ed-faa54f881388","html_url":"https://github.com/oliverde8/phpEtlBundle","commit_stats":{"total_commits":29,"total_committers":2,"mean_commits":14.5,"dds":"0.10344827586206895","last_synced_commit":"20600f686196e5dc03c072bb6edc0de99ce73902"},"previous_names":[],"tags_count":18,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oliverde8%2FphpEtlBundle","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oliverde8%2FphpEtlBundle/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oliverde8%2FphpEtlBundle/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oliverde8%2FphpEtlBundle/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/oliverde8","download_url":"https://codeload.github.com/oliverde8/phpEtlBundle/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246453729,"owners_count":20779999,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bundle","php","symfony","symfony-bundle"],"created_at":"2024-08-01T05:01:47.503Z","updated_at":"2025-03-31T10:32:09.194Z","avatar_url":"https://github.com/oliverde8.png","language":"PHP","funding_links":[],"categories":["PHP"],"sub_categories":[],"readme":"# PHP Etl Bundle\n\n[![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/oliverde8/phpEtlBundle/badges/quality-score.png?b=main)](https://scrutinizer-ci.com/g/oliverde8/phpEtlBundle/?branch=main)\n[![Build Status](https://scrutinizer-ci.com/g/oliverde8/phpEtlBundle/badges/build.png?b=main)](https://scrutinizer-ci.com/g/oliverde8/phpEtlBundle/build-status/main)\n[![Code Coverage](https://scrutinizer-ci.com/g/oliverde8/phpEtlBundle/badges/coverage.png?b=main)](https://scrutinizer-ci.com/g/oliverde8/phpEtlBundle/?branch=main)\n[![Latest Stable Version](https://poser.pugx.org/oliverde8/php-etl-bundle/v)](//packagist.org/packages/oliverde8/php-etl-bundle) \n[![Total Downloads](https://poser.pugx.org/oliverde8/php-etl-bundle/downloads)](//packagist.org/packages/oliverde8/php-etl-bundle) \n[![Latest Unstable Version](https://poser.pugx.org/oliverde8/php-etl-bundle/v/unstable)](//packagist.org/packages/oliverde8/php-etl-bundle) \n[![License](https://poser.pugx.org/oliverde8/php-etl-bundle/license)](//packagist.org/packages/oliverde8/php-etl-bundle)\n\nThe Php etl bundle allows the usage of [Oliver's PHP Etl](https://github.com/oliverde8/php-etl) library in symfony. \n\nYou should also check the [PHP ETL's Easy Admin Bundle](https://github.com/oliverde8/phpEtlEasyadminBundle) to have interfaces.\n\n## Installation\n\n1. Install using composer\n\n2. in `/config/` create a directory `etl`\n\n3. Enable bundle: \n```php\n    \\Oliverde8\\PhpEtlBundle\\Oliverde8PhpEtlBundle::class =\u003e ['all' =\u003e true],\n```\n\n4. Optional: Enable queue if you wish to allow users from the easy admin panel to do executions.\n```yaml\nframework:\n  messenger:\n    routing:\n        \"Oliverde8\\PhpEtlBundle\\Message\\EtlExecutionMessage\": async\n```\n\n5. Optional: Enable creation of individual files for each log by editing the monolog.yaml\n```yaml\netl:\n    type: service\n    id: Oliverde8\\PhpEtlBundle\\Services\\ChainExecutionLogger\n    level: debug\n    channels: [\"!event\"]\n```\n\n## Usage\n\n### Creating an ETL chain\n\nFirst read the documentation of the [PHP ETL](https://github.com/oliverde8/php-etl) \n\nEach chain is declare in a single file. The name of the chain is the name of the file created in `/config/etl/`. \n**Example:**\n```yaml\nchain:\n  \"Dummy Step\":\n    operation: rule-engine-transformer\n    options:\n      add: true\n      columns:\n        test:\n          rules:\n            - get : {field: [0, 'uid']}\n```\n\n### Executing a chain\n\n```sh\n./bin/console etl:execute demo '[[\"test1\"],[\"test2\"]]' '{\"opt1\": \"val1\"}'\n```\n\nThe first argument is the input, depending on your chain it can be empty. The second are parameters that \nwill be available in the context of each link in the chain. \n\n### Additional commands\n\n#### Get a definition\n```sh\n./bin/console etl:get-definition demo\n```\n\n### Adding your own chain operation\n\nTo add your own chain operation you need 2 classes. The operation itself that we will call \n`MyVendor\\Etl\\Operation\\OurTestOperation`, and a `MyVendor\\Etl\\OperationFactory\\OurTestOperationFactory` factory \nto create it. The factory allows us to configure the operation and inject service to our operation.\n\nAll operations needs to implement `DataChainOperationInterface`; they can extend `AbstractChainOperation`. \n\nAll factories needs to extend `Oliverde8\\Component\\PhpEtl\\Builder\\Factories\\AbstractFactory`. \n\nThe operation is a Model and not a service, you therefore need to add the path to the exclusions so that it's not\nmade a service by symfony: \n```yaml\nApp\\:\n  resource: '../src/'\n  exclude:\n    - '../src/Etl/Operation'\n```\n\nFactories needs to be tagged `etl.operation-factory\\ . To remove the need to tag all your factories you can add \nthe following line your your services.yaml file\n```yaml\n    MyVendor\\Etl\\OperationFactory\\:\n        resource: '../src/Etl/OperationFactory/'\n        tags: ['etl.operation-factory']\n```\n\nFor more information on how the etl works and how to create operations check the [Php Etl Documentation](https://github.com/oliverde8/php-etl#creating-you-own-operations)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foliverde8%2FphpEtlBundle","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Foliverde8%2FphpEtlBundle","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foliverde8%2FphpEtlBundle/lists"}