{"id":15740441,"url":"https://github.com/mordilion/pipeline","last_synced_at":"2026-03-04T12:31:22.208Z","repository":{"id":57019761,"uuid":"170082066","full_name":"mordilion/Pipeline","owner":"mordilion","description":"Pipeline is a library to transfer data quick and reliable or to create exports with any kind of interfaces like \\PDO, \\SplFileObject(CSV, etc.), Arrays and your own implementation.","archived":false,"fork":false,"pushed_at":"2024-05-29T09:24:50.000Z","size":37,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-01-11T03:53:12.839Z","etag":null,"topics":["array","configurable","csv","database","export","files","import","reader","transfer","writer"],"latest_commit_sha":null,"homepage":null,"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/mordilion.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-02-11T06:55:32.000Z","updated_at":"2024-05-29T09:23:58.000Z","dependencies_parsed_at":"2024-10-25T01:48:18.073Z","dependency_job_id":"1a7cf0b1-1c68-486e-99cf-ca550813a922","html_url":"https://github.com/mordilion/Pipeline","commit_stats":{"total_commits":8,"total_committers":1,"mean_commits":8.0,"dds":0.0,"last_synced_commit":"f657866901b3269c0f7be23946fd35d79ba58932"},"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mordilion%2FPipeline","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mordilion%2FPipeline/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mordilion%2FPipeline/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mordilion%2FPipeline/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mordilion","download_url":"https://codeload.github.com/mordilion/Pipeline/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241125068,"owners_count":19913839,"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":["array","configurable","csv","database","export","files","import","reader","transfer","writer"],"created_at":"2024-10-04T02:21:30.629Z","updated_at":"2025-02-28T08:39:52.533Z","avatar_url":"https://github.com/mordilion.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![Packagist](https://img.shields.io/packagist/dt/mordilion/pipeline.svg)](https://packagist.org/packages/mordilion/pipeline)\n\n# Pipeline\n\n## Description\n\nPipeline is a library to transfer data quick and reliable or to create exports with any kind of interfaces like \\PDO, \\SplFileObject(CSV, etc.), Arrays and your own implementation. It uses https://github.com/mordilion/Configurable to be full configurable. \n\n## Basic Example\n\n```php\n\u003c?php\n\nuse Mordilion\\Pipeline\\Pipeline;\nuse Mordilion\\Pipeline\\Reader\\ArrayReader;\nuse Mordilion\\Pipeline\\Writer\\SplFileObjectWriter;\n\n$data = [\n    ['id' =\u003e 1, 'name' =\u003e 'John Doe', 'email' =\u003e 'john.doe@domain.invalid'],\n    ['id' =\u003e 2, 'name' =\u003e 'Jane Doe', 'email' =\u003e 'jane.doe@domain.invalid'],\n    ['id' =\u003e 3, 'name' =\u003e 'Max Mustermann', 'email' =\u003e 'max.mustermann@domain.invalid']\n];\n\n$reader = new ArrayReader();\n$reader-\u003esetData($data);\n\n$filename = __DIR__ . '/export.csv';\n$writer = new SplFileObjectWriter();\n$writer-\u003esetFile(new \\SplFileObject($filename, 'w'))\n    -\u003esetMode(SplFileObjectWriter::MODE_CSV);\n\n$pipeline = new Pipeline();\n$pipeline-\u003esetReader($reader)\n    -\u003esetWriter($writer)\n    -\u003etransfer();\n```\n\n## Database to CSV \n\nAn example of how to export data from a database into a CSV file with additional columns.\n\n```php\n\u003c?php\n\nuse Mordilion\\Pipeline\\Pipeline;\nuse Mordilion\\Pipeline\\Reader\\PDOReader;\nuse Mordilion\\Pipeline\\Writer\\SplFileObjectWriter;\n\n$reader = new PDOReader();\n$reader-\u003esetPdo(new \\PDO('sqlite:' . __DIR__ . '/sqlite.db'))\n    -\u003esetSql('SELECT * FROM demo');\n\n$filename = __DIR__ . '/export.csv';\n$writer = new SplFileObjectWriter();\n$writer-\u003esetFile(new \\SplFileObject($filename, 'w'))\n    -\u003esetMode(SplFileObjectWriter::MODE_CSV);\n\n$pipeline = new Pipeline();\n$pipeline-\u003esetReader($reader)\n    -\u003esetWriter($writer)\n    -\u003etransfer(function (array $row, ReaderAbstract $reader, WriterAbstract $writer) {\n        $timestamps = [\n            'created_at' =\u003e isset($row['created_at']) ? $row['created_at'] : date('Y-m-d H:i:s'),\n            'updated_at' =\u003e isset($row['updated_at']) ? $row['updated_at'] : date('Y-m-d H:i:s'),\n            'exported_at' =\u003e date('Y-m-d H:i:s')\n        ];\n\n        return array_merge($row, $timestamps);\n    });\n```\n\n## Directory listing to CSV \n\nAn example of how to export data from a database into a CSV file with additional columns.\n\n```php\n\u003c?php\n\nuse Mordilion\\Pipeline\\Pipeline;\nuse Mordilion\\Pipeline\\Reader\\ExecReader;\nuse Mordilion\\Pipeline\\Writer\\SplFileObjectWriter;\n\n$reader = new ExecReader();\n$reader-\u003esetCommand('ls /');\n\n$filename = __DIR__ . '/directory-listing.csv';\n$writer = new SplFileObjectWriter();\n$writer-\u003esetFile(new \\SplFileObject($filename, 'w'))\n    -\u003esetMode(SplFileObjectWriter::MODE_CSV);\n\n$pipeline = new Pipeline();\n$pipeline-\u003esetReader($reader)\n    -\u003esetWriter($writer)\n    -\u003etransfer();\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmordilion%2Fpipeline","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmordilion%2Fpipeline","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmordilion%2Fpipeline/lists"}