Passed
Push — master ( c062f3...83edb5 )
by Aleksandr
02:32
created

AttributeModel::setSource()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 3
CRAP Score 1

Importance

Changes 0
Metric Value
eloc 2
c 0
b 0
f 0
dl 0
loc 4
ccs 3
cts 3
cp 1
rs 10
cc 1
nc 1
nop 1
crap 1
1
<?php
2
/**
3
 * This file is part of the eav package.
4
 * @author    Aleksandr Drobotik <[email protected]>
5
 * @copyright 2023 Aleksandr Drobotik
6
 * @license   https://opensource.org/license/mit  The MIT License
7
 */
8
declare(strict_types=1);
9
10
namespace Drobotik\Eav\Model;
11
12
use Drobotik\Eav\Enum\_ATTR;
13
use PDO;
14
15
class AttributeModel extends Model
16
{
17 1
    public function __construct()
18
    {
19 1
        $this->setTable(_ATTR::table());
20 1
        $this->setPrimaryKey(_ATTR::ID->column());
21
    }
22
23 1
    public function create(array $data) : int
24
    {
25 1
        $conn = $this->db();
26 1
        $conn->createQueryBuilder()
27 1
            ->insert($this->getTable())
28 1
            ->values([
29 1
                _ATTR::DOMAIN_ID->column() => '?',
30 1
                _ATTR::NAME->column() => '?',
31 1
                _ATTR::TYPE->column() => '?',
32 1
                _ATTR::STRATEGY->column() => '?',
33 1
                _ATTR::SOURCE->column() => '?',
34 1
                _ATTR::DEFAULT_VALUE->column() => '?',
35 1
                _ATTR::DESCRIPTION->column() => '?'
36 1
            ])
37 1
            ->setParameter(0, $data[_ATTR::DOMAIN_ID->column()], PDO::PARAM_INT)
38 1
            ->setParameter(1, $data[_ATTR::NAME->column()])
39 1
            ->setParameter(2, $data[_ATTR::TYPE->column()])
40 1
            ->setParameter(3, $data[_ATTR::STRATEGY->column()])
41 1
            ->setParameter(4, $data[_ATTR::SOURCE->column()])
42 1
            ->setParameter(5, $data[_ATTR::DEFAULT_VALUE->column()])
43 1
            ->setParameter(6, $data[_ATTR::DESCRIPTION->column()])
44 1
            ->executeQuery();
45 1
        return (int) $conn->lastInsertId();
46
    }
47
48 1
    public function findByName(string $name, int $domainKey) : bool|array
49
    {
50 1
        return $this->db()->createQueryBuilder()
51 1
            ->select($this->getPrimaryKey())
52 1
            ->from($this->getTable())
53 1
            ->where(sprintf('%s = ?', _ATTR::DOMAIN_ID->column()))
54 1
            ->andWhere(sprintf('%s = ?', _ATTR::NAME->column()))
55 1
            ->setParameter(0, $domainKey, PDO::PARAM_INT)
56 1
            ->setParameter(1, $name)
57 1
            ->executeQuery()
58 1
            ->fetchAssociative();
59
    }
60
61
}
62