2017 © Pedro PelĆ”ez
 

symfony-bundle pomm-foundation-bundle

A pomm-project/foundation integration in symfony

image

gnugat/pomm-foundation-bundle

A pomm-project/foundation integration in symfony

  • Wednesday, December 13, 2017
  • by gnupat
  • Repository
  • 1 Watchers
  • 6 Stars
  • 3,169 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 1 Forks
  • 0 Open issues
  • 10 Versions
  • 31 % Grown

The README.md

PommFoundation Bundle

A pomm-project/foundation integration in Symfony., (*1)

This bundle provides Console Commands for your database, as well as a Pomm's QueryManagerInterface service to be able to make SQL queries in your Symfony application., (*2)

The provided QueryManagerInterface implementation is tied to a Connection:, (*3)

  1. the first time it is called, opens a new connection
  2. the next times it is called, uses the existing connection
  3. if shutdown is called, closes the connection and goes back to step 1

This allows to keep a 1 to 1 relation between a HTTP request and a database Connection, which is important when the application is a long running process (e.g. tests, FastCGI, AMQP consumer, etc)., (*4)

It also provides support parameter conversion for:, (*5)

  • booleans: from false to 'f' and from true to 't'
  • \DateTime: string formatted as Y-m-d H:i:s T

Integrations

This bundle provides provides the following:, (*6)

  • the service PommProject\Foundation\QueryManager\QueryManagerInterface
  • the event listener Gnugat\PommFoundationBundle\EventListener\ClosingConnectionListener
  • the console commands:
    • gnugat-pomm-foundation:database:check-existence (g:p:ch)
    • gnugat-pomm-foundation:database:close-connections (g:p:cl)
    • gnugat-pomm-foundation:database:create (g:p:cr)
    • gnugat-pomm-foundation:database:drop (g:p:dr)
    • gnugat-pomm-foundation:database:dump (g:p:du)
    • gnugat-pomm-foundation:database:execute-file (g:p:ex)
    • gnugat-pomm-foundation:database:launch-console (g:p:la)
    • gnugat-pomm-foundation:database:query (g:p:qu)

Installation

First provide the database configuration:, (*7)

# config/parameters.yaml.dist
parameters:
    database_host: 127.0.0.1
    database_port: 5432
    database_name: gnugat_pomm_foundation
    database_user: postgres
    database_password: ~

Then install gnugat/pomm-foundation-bundle using Composer:, (*8)

composer require gnugat/pomm-foundation-bundle:^0.6

Finally add the following in your config/bundles.php:, (*9)

<?php

return [
    // Your other bundles...

    \Gnugat\PommFoundationBundle\GnugatPommFoundationBundle::class => ['all' => true],
];

Usage

Inject the PommProject\Foundation\QueryManager\QueryManagerInterface service in your own services:, (*10)

<?php

use PommProject\Foundation\QueryManager\QueryManagerInterface;

class MyService
{
    private const NO_RESULTS = [];

    private $queryManager;

    public function __construct(QueryManagerInterface $queryManager)
    {
        $this->queryManager = $queryManager;
    }

    public function myMethod(int $id, bool $isDeleted): array
    {
        $results = iterator_to_array($this->queryManager->query(
            'SELECT * FROM my_table WHERE id = $* AND is_deleted = $*',
            [
                $id,
                $isDeleted,
            ]
        ));
        if (self::NO_RESULTS === $results) {
            throw new \Exception("Nothing found in my_table for ID \"$id\"");
        }

        return $results;
    }
}

Further documentation

You can see the current and past versions using one of the following:, (*11)

You can find more documentation at the following links:, (*12)

The Versions