Completed
Push — master ( 17f0e2...a31e3e )
by Thomas
12s
created

PrepopulateUuidExtension::onAfterBuild()   A

Complexity

Conditions 3
Paths 3

Size

Total Lines 8
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 5
c 1
b 0
f 0
dl 0
loc 8
rs 10
cc 3
nc 3
nop 0
1
<?php
2
3
namespace LeKoala\Uuid;
4
5
use SilverStripe\ORM\DataExtension;
0 ignored issues
show
Bug introduced by
The type SilverStripe\ORM\DataExtension was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
6
use SilverStripe\ORM\DataObject;
7
use SilverStripe\ORM\DB;
8
9
/**
10
 * Add this extension to any class requiring pre-population of Uuids on dev/build
11
 */
12
class PrepopulateUuidExtension
13
    extends DataExtension
14
{
15
    /**
16
     * Invoked after every database build is complete (including after table creation and
17
     * default record population).
18
     *
19
     * See {@link DatabaseAdmin::doBuild()} for context.
20
     */
21
    public function onAfterBuild()
22
    {
23
        $emptyUuidItems = DataObject::get($this->owner->getClassName())->filter('Uuid', null);
24
        if($emptyUuidCount = $emptyUuidItems->count()){
25
            foreach ($emptyUuidItems as $item) {
26
                $item->UuidSegment();
27
            }
28
            DB::alteration_message("{$this->owner->getClassName()}: {$emptyUuidCount} empty Uuids prepopulated", 'changed');
29
        }
30
    }
31
}