pmgdev/database-replicator-nette

This package is abandoned and no longer maintained. No replacement package was suggested.

DatabaseReplicator extension for nette.

v0.1.1 2019-09-06 09:15 UTC

This package is auto-updated.

Last update: 2022-01-18 16:55:41 UTC


README

Build Status Scrutinizer Code Quality Downloads this Month Latest stable Coverage Status

This repository provide DatabaseReplicator and better integration to nette by extension. Where is written what needs to be implemented for smooth running.

Install by composer

composer require --dev pmgdev/database-replicator-nette

Before start

When everybody can have different database layout, then this extension is abstract class DatabaseReplicatorExtension24.

In first step you must extend this class and implement method buildDatabaseFactory. It is easy:

use PmgDev\DatabaseReplicator\DatabaseReplicatorExtension24

class MyDatabaseReplicatorExtension extends DatabaseReplicatorExtension24
{

	protected function buildDatabaseConnection(
		DI\ServiceDefinition $database,
		string $name,
		string $replicatorService
	): void
	{
		$database
			->setFactory(MyConnectionDatabase::class)
			->setArguments([$replicatorService]);
	}

}

That's all and register new extension.

extensions:
	databaseReplicator: MyDatabaseReplicatorExtension # use our new extension class

databaseReplicator:
	sourceFile: %appDir%/../db/structure.sql
	admin:
		database: postgres
		username: postgres
		host: localhost
		password: dummy
		port: 5432
	connections:
		test_db: # source database name
			# all properties copy from admin
			username: user
			password: dummy
			# database: you can set other database name 
		test_data:
			# next test database with dummy data
	tempDir: %tempDir%
	# psql: # default is /usr/bin/psql

Now we have available service databaseReplicator.test_db.database and databaseReplicator.test_data.database instance of PmgDev\DatabaseReplicator\Database

$database = $container->getService('databaseReplicator.test_db.database');
$connection = $database->create(); // create database
// make tests
$database->drop();