dbp / relay-blob-connector-campusonline-dms-bundle
A template bundle for the Relay API gateway
Installs: 761
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 3
Forks: 0
Open Issues: 1
Type:symfony-bundle
Requires
- php: >=8.1
- ext-json: *
- api-platform/core: ^3.2
- dbp/relay-blob-bundle: ^0.1.66
- dbp/relay-core-bundle: ^0.1.187
- doctrine/doctrine-migrations-bundle: ^3.3
- symfony/config: ^6.4
- symfony/dependency-injection: ^6.4
- symfony/framework-bundle: ^6.4
- symfony/http-kernel: ^6.4
- symfony/uid: ^6.4
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.50
- phpstan/phpstan: ^1.10.59
- phpstan/phpstan-phpunit: ^1.3.16
- phpstan/phpstan-symfony: ^1.3.7
- phpunit/phpunit: ^10.1
- symfony/browser-kit: ^6.4
- symfony/http-client: ^6.4
- symfony/monolog-bundle: ^3.10
- symfony/phpunit-bridge: ^7.0.4
- vimeo/psalm: ^5.22.2
README
DbpRelay{{Name}}Bundle
GitHub | Packagist | Frontend Application | {{Name}} Website
The {{name}} bundle provides an API for interacting with ...
There is a corresponding frontend application that uses this API at {{Name}} Frontend Application.
Bundle installation
You can install the bundle directly from packagist.org.
composer require {{package-name}}
Integration into the Relay API Server
- Add the bundle to your
config/bundles.php
in front ofDbpRelayCoreBundle
:
... Dbp\Relay\{{Name}}Bundle\DbpRelay{{Name}}Bundle::class => ['all' => true], Dbp\Relay\CoreBundle\DbpRelayCoreBundle::class => ['all' => true], ];
If you were using the DBP API Server Template as template for your Symfony application, then this should have already been generated for you.
- Run
composer install
to clear caches
Configuration
The bundle has a database_url
configuration value that you can specify in your
app, either by hard-coding it, or by referencing an environment variable.
For this create config/packages/dbp_relay_{{name}}.yaml
in the app with the following
content:
dbp_relay_{{name}}: database_url: 'mysql://db:secret@mariadb:3306/db?serverVersion=mariadb-10.3.30' # database_url: %env({{NAME}}_DATABASE_URL)%
If you were using the DBP API Server Template as template for your Symfony application, then the configuration file should have already been generated for you.
For more info on bundle configuration see https://symfony.com/doc/current/bundles/configuration.html.
Development & Testing
- Install dependencies:
composer install
- Run tests:
composer test
- Run linters:
composer run lint
- Run cs-fixer:
composer run cs-fix
Bundle dependencies
Don't forget you need to pull down your dependencies in your main application if you are installing packages in a bundle.
# updates and installs dependencies of {{package-name}}
composer update {{package-name}}
Scripts
Database migration
Run this script to migrate the database. Run this script after installation of the bundle and after every update to adapt the database to the new source code.
php bin/console doctrine:migrations:migrate --em=dbp_relay_{{name}}_bundle
Error codes
/{{name}}/submissions
POST
/{{name}}/submissions/{identifier}
GET
Roles
This bundle needs the role ROLE_SCOPE_{{NAME}}
assigned to the user to get permissions to fetch data.
To create a new submission entry the Symfony role ROLE_SCOPE_{{NAME}}-POST
is required.
Events
To extend the behavior of the bundle the following event is registered:
CreateSubmissionPostEvent
This event allows you to react on submission creations. You can use this for example to email the submitter of the submission.
An event subscriber receives a Dbp\Relay\{{Name}}Bundle\Event\CreateSubmissionPostEvent
instance
in a service for example in src/EventSubscriber/CreateSubmissionSubscriber.php
:
<?php namespace App\EventSubscriber; use Dbp\Relay\{{Name}}Bundle\Event\CreateSubmissionPostEvent; use Symfony\Component\EventDispatcher\EventSubscriberInterface; class CreateSubmissionSubscriber implements EventSubscriberInterface { public static function getSubscribedEvents(): array { return [ CreateSubmissionPostEvent::NAME => 'onPost', ]; } public function onPost(CreateSubmissionPostEvent $event) { $submission = $event->getSubmission(); $dataFeedElement = $submission->getDataFeedElementDecoded(); // TODO: extract email address and send email $email = $dataFeedElement['email']; } }