Projection CLI Actions
PHP rebuild and delete projections
Projection Actions
Projection initialization
As projection can be restarted, deleted and created differently. When the projection knows how to setup it itself, it's easy to rebuild it when change is needed.
bin/console ecotone:es:initialize-projection {projectionName}artisan ecotone:es:initialize-projectionn {projectionName}$messagingSystem->runConsoleCommand("ecotone:es:initialize-projection", ["name" => $projectionName]);And inside the projection we need to implement ProjectionInitialization to tell Ecotone what to do:
#[ProjectionInitialization]
public function initialization() : void
{
$this->connection->executeStatement(<<<SQL
    CREATE TABLE IF NOT EXISTS in_progress_tickets (
        ticket_id VARCHAR(36) PRIMARY KEY,
        ticket_type VARCHAR(25)
    )
SQL);
}Resetting/Rebuilding the projection
In order to restart the projection in case we want to provide incompatible change, we can simply reset the projection and it will build up from the beginning.
bin/console ecotone:es:reset-projection {projectionName}artisan ecotone:es:reset-projection {projectionName}$messagingSystem->runConsoleCommand("ecotone:es:reset-projection", ["name" => $projectionName]);And inside the projection we need to implement ProjectionReset to tell Ecotone what to do:
#[ProjectionReset]
public function reset() : void
{
$this->connection->executeStatement(<<<SQL
    DELETE FROM in_progress_tickets
SQL);
}Deleting the projection
If we want to delete the projection
bin/console ecotone:es:delete-projection {projectionName}artisan ecotone:es:delete-projection {projectionName}$messagingSystem->runConsoleCommand("ecotone:es:delete-projection", ["name" => $projectionName]);And inside the projection we need to implement ProjectionDelete to tell Ecotone what to do:
#[ProjectionDelete]
public function delete() : void
{
$this->connection->executeStatement(<<<SQL
    DROP TABLE in_progress_tickets
SQL);
}Manually triggering projection
If we want to manually trigger projection
bin/console ecotone:es:trigger-projection {projectionName}artisan ecotone:es:trigger-projection {projectionName}$messagingSystem->runConsoleCommand("ecotone:es:trigger-projection", ["name" => $projectionName]);Last updated
Was this helpful?