Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/neighborhoods/kojo-phinx-templates
A collection of Phinx template for use with Kōjō
https://github.com/neighborhoods/kojo-phinx-templates
Last synced: about 1 month ago
JSON representation
A collection of Phinx template for use with Kōjō
- Host: GitHub
- URL: https://github.com/neighborhoods/kojo-phinx-templates
- Owner: neighborhoods
- License: mit
- Created: 2021-01-14T15:08:59.000Z (almost 4 years ago)
- Default Branch: main
- Last Pushed: 2021-03-25T15:58:58.000Z (almost 4 years ago)
- Last Synced: 2024-11-28T13:18:03.608Z (about 1 month ago)
- Size: 22.5 KB
- Stars: 0
- Watchers: 4
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Phinx templates for Kōjō
A developer utility to generate [Kōjō](https://github.com/neighborhoods/Kojo) related [Phinx](https://github.com/cakephp/phinx) migrations and seeds.
## Install
Via Composer as a development dependency
``` bash
$ composer require --dev neighborhoods/kojo-phinx-templates
```You should also have [Phinx](https://github.com/cakephp/phinx) and [Kōjō](https://github.com/neighborhoods/Kojo) as direct dependencies. Don't rely on this package pulling them in, especially since this is a dev dependency.
This package requires Phinx 0.12.5 or above. If you're having issues with running the command above, send the `composer.json` file to the code owner.
## Use cases
Possible use cases are described below.
### Kōjō setup
Create migration for Kōjō setup. Every project using Kōjō should have it.
``` bash
vendor/bin/phinx create InstallKojo --template=vendor/neighborhoods/kojo-phinx-templates/src/Migration/InstallKojoMigration.template.php.dist
```If you open the file you'll see that the template assumes that Kōjō parameters are located in the `kojo-environment` folder inside the current working directly.
That's because the `kojo-environment` folder is usually located in the application root from where migrations are usually run using `vendor/bin/phinx migrate` command.
You might need to update the path to Kōjō parameters. If so, consider defining it relative to the migration file, using the `__DIR__` constant.### Job Type Creation
For each new worker generate a migration defining the job type. In these examples the worker name is Observer. Use something more descriptive, like the component name.
``` bash
vendor/bin/phinx create CreateObserverJobType --template=vendor/neighborhoods/kojo-phinx-templates/src/Migration/CreateJobTypeMigration.template.php.dist
```Open the generated migration, update the job type attributes. The values in the migration should not depend on other classes. Copy constant values, rather than referencing them.
Thanks to @jpmarcotte for insights on this one.
### Job Scheduling
If it makes sense, create a seeder scheduling the job. This is useful for jobs rescheduling themselves, providing a way to start the initial job.
``` bash
vendor/bin/phinx seed:create ObserverJobSeeder --template=vendor/neighborhoods/kojo-phinx-templates/src/Seed/JobSeeder.template.php.dist
```
Open the generated seeder and update the `JOB_TYPE_CODE` constant.Run the generated seeder whenever you want to start the job.
``` bash
vendor/bin/phinx seed:run -s ObserverJobSeeder
```Jobs rescheduling themselves should be seeded after their job type creation. Integrating the seeding into migrations simplifies the deployment process and ensures the job is seeded only once.
Generate a seeding migration by running the command below.
``` bash
vendor/bin/phinx create SeedObserverJob --template=vendor/neighborhoods/kojo-phinx-templates/src/Migration/SeedJobMigration.template.php.dist
```
Open the generated migration and update the Seed class name in the required seed file path, `up()` and `down()` methods.