diff --git a/config/activitylog.php b/config/activitylog.php index a9c32bf0..3b664ae0 100644 --- a/config/activitylog.php +++ b/config/activitylog.php @@ -42,4 +42,10 @@ * used by the Activity model shipped with this package. */ 'table_name' => 'activity_log', + + /* + * This is the database connection that will be used by the migration and + * the Activity model shipped with this package. + */ + 'database_connection' => env('ACTIVITY_LOGGER_DB_CONNECTION', 'mysql'), ]; diff --git a/migrations/create_activity_log_table.php.stub b/migrations/create_activity_log_table.php.stub index 4163d571..2251f97e 100644 --- a/migrations/create_activity_log_table.php.stub +++ b/migrations/create_activity_log_table.php.stub @@ -11,7 +11,7 @@ class CreateActivityLogTable extends Migration */ public function up() { - Schema::create(config('activitylog.table_name'), function (Blueprint $table) { + Schema::connection(config('activitylog.database_connection'))->create(config('activitylog.table_name'), function (Blueprint $table) { $table->bigIncrements('id'); $table->string('log_name')->nullable(); $table->text('description'); @@ -31,6 +31,6 @@ class CreateActivityLogTable extends Migration */ public function down() { - Schema::dropIfExists(config('activitylog.table_name')); + Schema::connection(config('activitylog.database_connection'))->dropIfExists(config('activitylog.table_name')); } } diff --git a/phpunit.xml.dist b/phpunit.xml.dist index bcdc2823..7a65b9f4 100644 --- a/phpunit.xml.dist +++ b/phpunit.xml.dist @@ -19,7 +19,4 @@ src/ - - - diff --git a/src/Models/Activity.php b/src/Models/Activity.php index 5f1d87f4..8e824c36 100644 --- a/src/Models/Activity.php +++ b/src/Models/Activity.php @@ -19,6 +19,10 @@ class Activity extends Model implements ActivityContract public function __construct(array $attributes = []) { + if (! isset($this->connection)) { + $this->setConnection(config('activitylog.database_connection')); + } + if (! isset($this->table)) { $this->setTable(config('activitylog.table_name')); } diff --git a/tests/CustomDatabaseConnectionActivityModelTest.php b/tests/CustomDatabaseConnectionActivityModelTest.php new file mode 100644 index 00000000..dca0b363 --- /dev/null +++ b/tests/CustomDatabaseConnectionActivityModelTest.php @@ -0,0 +1,37 @@ +assertEquals($model->getConnectionName(), config('activitylog.database_connection')); + } + + /** @test */ + public function it_uses_a_custom_database_connection() + { + $model = new Activity(); + + $model->setConnection('custom_sqlite'); + + $this->assertNotEquals($model->getConnectionName(), config('activitylog.database_connection')); + $this->assertEquals($model->getConnectionName(), 'custom_sqlite'); + } + + /** @test */ + public function it_uses_the_database_connection_from_model() + { + $model = new CustomDatabaseConnectionOnActivityModel(); + + $this->assertNotEquals($model->getConnectionName(), config('activitylog.database_connection')); + $this->assertEquals($model->getConnectionName(), 'custom_connection_name'); + } +} diff --git a/tests/Models/CustomDatabaseConnectionOnActivityModel.php b/tests/Models/CustomDatabaseConnectionOnActivityModel.php new file mode 100644 index 00000000..d164190b --- /dev/null +++ b/tests/Models/CustomDatabaseConnectionOnActivityModel.php @@ -0,0 +1,10 @@ +set('activitylog.database_connection', 'sqlite'); + $app['config']->set('database.default', 'sqlite'); + $app['config']->set('database.connections.sqlite', [ + 'driver' => 'sqlite', + 'database' => ':memory:', + ]); + $app['config']->set('auth.providers.users.model', User::class); $app['config']->set('app.key', 'base64:'.base64_encode( Encrypter::generateKey($app['config']['app.cipher'])