ElasticsearchRepository   A
last analyzed

Complexity

Total Complexity 3

Size/Duplication

Total Lines 35
Duplicated Lines 0 %

Test Coverage

Coverage 0%

Importance

Changes 0
Metric Value
wmc 3
eloc 6
dl 0
loc 35
ccs 0
cts 8
cp 0
rs 10
c 0
b 0
f 0

3 Methods

Rating   Name   Duplication   Size   Complexity  
A getIndexNameFromEntityName() 0 5 1
A camelCaseToSnakeCase() 0 4 1
A getIndexName() 0 3 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace CCT\Component\ODMElasticsearch\Repository;
6
7
class ElasticsearchRepository extends AbstractElasticsearchRepository
8
{
9
    /**
10
     * Elastic search index name
11
     *
12
     * @return string
13
     */
14
    public function getIndexName(): string
15
    {
16
        return $this->getIndexNameFromEntityName();
17
    }
18
19
    /**
20
     * Converts entity name to index name by removing namespace and converting to snake case.
21
     *
22
     * @return string
23
     */
24
    protected function getIndexNameFromEntityName(): string
25
    {
26
        $className = substr($this->entityName, strrpos($this->entityName, '\\') + 1);
27
28
        return $this->camelCaseToSnakeCase($className);
29
    }
30
31
    /**
32
     * Converts string from camelCase to snake_case
33
     *
34
     * @param string $name
35
     *
36
     * @return string
37
     */
38
    protected function camelCaseToSnakeCase(string $name): string
39
    {
40
        return strtolower(
41
            ltrim(preg_replace('/[A-Z]([A-Z](?![a-z]))*/', '_$0', $name), '_')
42
        );
43
    }
44
}
45