Passed
Push — master ( 7be59a...6fea24 )
by Nate
03:01
created

ModelByIdOrString::toRecord()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 10
Code Lines 4

Duplication

Lines 10
Ratio 100 %

Importance

Changes 0
Metric Value
dl 10
loc 10
rs 9.4285
c 0
b 0
f 0
cc 2
eloc 4
nc 2
nop 2
1
<?php
2
3
/**
4
 * @copyright  Copyright (c) Flipbox Digital Limited
5
 * @license    https://github.com/flipbox/spark/blob/master/LICENSE
6
 * @link       https://github.com/flipbox/spark
7
 */
8
9
namespace flipbox\spark\services;
10
11
use flipbox\spark\models\Model as BaseModel;
12
use flipbox\spark\records\Record;
13
14
/**
15
 * @author Flipbox Factory <[email protected]>
16
 * @since 2.1.0
17
 */
18
abstract class ModelByIdOrString extends ModelById
19
{
20
21
    use traits\ModelByString;
22
23
    /**
24
     * @inheritdoc
25
     */
26
    public function find($identifier, string $toScenario = null)
27
    {
28
29
        if ($model = parent::find($identifier, $toScenario)) {
30
            return $model;
31
        }
32
33
        if (!is_string($identifier)) {
34
            return null;
35
        }
36
37
        return $this->findByString($identifier, $toScenario);
38
39
    }
40
41
    /*******************************************
42
     * CACHE
43
     *******************************************/
44
45
    /**
46
     * @inheritdoc
47
     */
48
    public function findCache($identifier)
49
    {
50
51
        if ($model = parent::findCache($identifier)) {
52
            return $model;
53
        }
54
55
        if (!is_string($identifier)) {
56
            return null;
57
        }
58
59
        return $this->findCacheByString($identifier);
60
61
    }
62
63
    /**
64
     * @inheritdoc
65
     */
66
    public function addToCache(BaseModel $model)
67
    {
68
69
        parent::addToCache($model);
70
71
        $this->cacheByString($model);
72
73
        return $this;
74
75
    }
76
77
78
    /**
79
     * @inheritdoc
80
     */
81
    public function findCacheByRecord(Record $record)
82
    {
83
84
        if ($model = parent::findCacheByRecord($record)) {
85
            return $model;
86
        }
87
88
        return $this->findCacheByRecordByString($record);
89
90
    }
91
92
    /*******************************************
93
     * RECORD
94
     *******************************************/
95
96
    /**
97
     * @param BaseModel $model
98
     * @return Record|null
99
     */
100
    public function findRecordByModel(BaseModel $model)
101
    {
102
103
        if($record = parent::findRecordByModel($model)) {
104
            return $record;
105
        }
106
107
        $stringValue = $this->stringValue($model);
108
109
        if ($stringValue !== null) {
110
            return null;
111
        }
112
113
        return $this->findRecordByString($stringValue);
114
115
    }
116
117
}
118