Completed
Push — master ( 33ee7a...35da7e )
by Gabriel
565:17 queued 500:16
created

DatabaseBucketLogger::__construct()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 2
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 1
c 1
b 0
f 0
nc 1
nop 1
dl 0
loc 2
rs 10
1
<?php
2
3
namespace WMDE\Fundraising\Frontend\BucketTesting\Logging;
4
5
use WMDE\Fundraising\Frontend\BucketTesting\Domain\BucketLoggingRepository;
6
use WMDE\Fundraising\Frontend\BucketTesting\Domain\Model\Bucket;
7
use WMDE\Fundraising\Frontend\BucketTesting\Domain\Model\BucketLog;
8
use WMDE\Fundraising\Frontend\BucketTesting\Domain\Model\BucketLogBucket;
9
10
class DatabaseBucketLogger implements BucketLogger {
11
12
	private BucketLoggingRepository $bucketLoggingRepository;
13
14
	public function __construct( BucketLoggingRepository $bucketLoggingRepository ) {
15
		$this->bucketLoggingRepository = $bucketLoggingRepository;
16
	}
17
18
	public function writeEvent( LoggingEvent $event, Bucket ...$buckets ): void {
19
		$metadata = $event->getMetaData();
20
21
		if ( !isset( $metadata['id'] ) ) {
22
			throw new LoggingError( 'Database Bucket Logger expects an external ID to be present' );
23
		}
24
25
		$bucketLog = new BucketLog( $metadata['id'], $event->getName() );
26
		$this->addBucketLogBuckets( $bucketLog, $buckets );
27
28
		$this->bucketLoggingRepository->storeBucketLog( $bucketLog );
29
	}
30
31
	private function addBucketLogBuckets( BucketLog $bucketLog, array $buckets ): void {
32
		foreach ( $buckets as $bucket ) {
33
			$bucketLog->addBucket( new BucketLogBucket(
34
				$bucket->getName(),
35
				$bucket->getCampaign()->getName()
36
			) );
37
		}
38
	}
39
}
40