Skip to content

Latest commit

 

History

History
168 lines (127 loc) · 4.35 KB

database.md

File metadata and controls

168 lines (127 loc) · 4.35 KB

Database

You can manage your feature toggles via a database. The following database vendors are currently supported:

  • MySQL
  • Oracle
  • Microsoft SQL Server
  • PostgreSQL
  • SAP Sybase SQL Anywhere
  • SQLite

The bundle will use the database activator.

Download the the activator

The DatabaseActivator is not included by default. Therefore, you must first insert this via Composer as a dependency.

Open a command console, enter your project directory and execute the following command to download the latest stable version of this bundle:

$ composer require flagception/database-activator

This command requires you to have Composer installed globally, as explained in the installation chapter of the Composer documentation.

Enable the activator

Then, enable the activator in your config and set database credentials.

# config.yml

flagception:
    activators:     
        database:
            
            # Enable database activator (default: false)
            enable: true
            
            # Connection string
            url: 'mysql://user:secret@localhost/mydb'

You can fill a connection string (url), a PDO instance, a DBAL instance or old-fashioned the individual credentials fields.

Connection string:
# config.yml

flagception:
    activators:     
        database:
            
            # Enable database activator (default: false)
            enable: true
            
            # Connection string
            url: 'mysql://user:secret@localhost/mydb'
PDO instance:
# config.yml

flagception:
    activators:     
        database:
            
            # Enable database activator (default: false)
            enable: true
            
            # By pdo instance
            pdo: 'pdo.service.id'
DBAL instance:
# config.yml

flagception:
    activators:     
        database:
            
            # Enable database activator (default: false)
            enable: true
            
            # By dbal instance
            dbal: 'dbal.service.id'
Credential fields:
# config.yml

flagception:
    activators:     
        database:
            
            # Enable database activator (default: false)
            enable: true
            
            # By credentials field
            credentials:
                dbname: 'mydb',
                user: 'user',
                password: 'secret',         # You can use env too (%env(MYSQL_DATABASE)%)
                host: 'localhost',
                driver: 'pdo_mysql'

Table

The DatabaseActivator will automatically create a table for storing the feature states if this not already exists. By default, the table name is flagception_features which contains the columns feature and state.

You can change the tables and / or column names in your option config:

# config.yml

flagception:
    activators:     
        database:
            
            # Enable database activator (default: false)
            enable: true
            
            # Connection string
            url: 'mysql://user:secret@localhost/mydb'
            
            # Rename table and columns
            options:
                db_table: 'my_table'
                db_column_feature: 'my_cool_feature_name'
                db_column_state: 'my_current_feature_state'

Enable caching

This queries status from a database, which can negatively impact performance. Therefore, you can set up a cache for this activator. Identical feature queries are then loaded from the cache instead of being retrieved from the database. All you have to do is specify a cache pool and cache interval.

By default, the cache is disabled.

Example:

# config.yml

flagception:
    activators:     
        database:
            enable: true
            # ...
            cache:
            
                # Enable the cache option (default: false)
                enable: true
                
                # Set cache pool (default: cache.app)
                pool: cache.app
                
                # Set lifetime for cache in seconds (default: 3600)
                lifetime: 3600