Proyectos de Subversion LeadersLinked - Services

Rev

| Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
23 efrain 1
<?php
2
 
3
declare(strict_types=1);
4
 
5
namespace LeadersLinked\Mapper;
6
 
7
use Laminas\Db\Adapter\AdapterInterface;
8
use LeadersLinked\Hydrator\ObjectPropertyHydrator;
9
use LeadersLinked\Model\JwtToken;
10
use LeadersLinked\Mapper\Common\MapperCommon;
11
 
12
class JwtTokenMapper extends MapperCommon
13
{
14
    const _TABLE = 'tbl_jwt_tokens';
15
 
16
    /**
17
     *
18
     * @var JwtTokenMapper
19
     */
20
    private static $_instance;
21
 
22
    /**
23
     *
24
     * @param AdapterInterface $adapter
25
     */
26
    private function __construct($adapter)
27
    {
28
        parent::__construct($adapter);
29
    }
30
 
31
    /**
32
     *
33
     * @param AdapterInterface $adapter
34
     * @return JwtTokenMapper
35
     */
36
    public static function getInstance($adapter)
37
    {
38
        if(self::$_instance == null) {
39
            self::$_instance = new JwtTokenMapper($adapter);
40
        }
41
        return self::$_instance;
42
    }
43
 
44
 
45
    /**
46
     *
47
     * @param int $id
48
     * @return JwtToken
49
     */
50
    public function fetchOne($id)
51
    {
52
        $select = $this->sql->select(self::_TABLE);
53
        $select->where->equalTo('id', $id);
54
        $select->limit(1);
55
 
56
        $prototype = new JwtToken();
57
        return $this->executeFetchOneObject($select, $prototype);
58
    }
59
 
60
    /**
61
     *
62
     * @param string $uuid
63
     * @return JwtToken
64
     */
65
    public function fetchOneByUuid($uuid)
66
    {
67
        $select = $this->sql->select(self::_TABLE);
68
        $select->where->equalTo('uuid', $uuid);
69
        $select->limit(1);
70
 
71
        $prototype = new JwtToken();
72
        return $this->executeFetchOneObject($select, $prototype);
73
    }
74
 
75
 
76
 
77
    /**
78
     *
79
     * @param string $token
80
     * @return JwtToken
81
     */
82
    public function fetchOneByToken($token)
83
    {
84
        $select = $this->sql->select(self::_TABLE);
85
        $select->where->equalTo('token', $token);
86
        $select->limit(1);
87
 
88
        $prototype = new JwtToken();
89
        return $this->executeFetchOneObject($select, $prototype);
90
    }
91
 
92
 
93
    /**
94
     *
95
     * @param JwtToken $jwtToken
96
     * @return boolean
97
     */
98
    public function insert($jwtToken)
99
    {
100
        $hydrator = new ObjectPropertyHydrator();
101
        $values = $hydrator->extract($jwtToken);
102
        $values = $this->removeEmpty($values);
103
 
104
        $insert = $this->sql->insert(self::_TABLE);
105
        $insert->values($values);
106
 
107
 
108
 
109
 
110
        $result = $this->executeInsert($insert);
111
        if($result) {
112
            $jwtToken->id = $this->lastInsertId;
113
        }
114
 
115
        return $result;
116
 
117
    }
118
 
119
    /**
120
     *
121
     * @param JwtToken $jwtToken
122
     * @return boolean
123
     */
124
    public function update($jwtToken)
125
    {
126
        $hydrator = new ObjectPropertyHydrator();
127
        $values = $hydrator->extract($jwtToken);
128
        $values = $this->removeEmpty($values);
129
 
130
        $update = $this->sql->update(self::_TABLE);
131
        $update->set($values);
132
        $update->where->equalTo('id', $jwtToken->id);
133
 
134
        return $this->executeUpdate($update);
135
    }
136
 
137
    /**
138
     *
139
     * @param JwtToken $jwtToken
140
     * @return boolean
141
     */
142
    public function delete($jwtToken)
143
    {
144
        $delete = $this->sql->delete(self::_TABLE);
145
        $delete->where->equalTo('id', $jwtToken->id);
146
 
147
        return $this->executeDelete($delete);
148
 
149
 
150
    }
151
 
152
 
153
    /**
154
     *
155
     * @return boolean
156
     */
157
    public function truncate()
158
    {
159
        $sql = 'DELETE FROM ' . self::_TABLE;
160
        if($this->executeSentenceWithParameters($sql)) {
161
            $sql = 'ALTER TABLE ' . self::_TABLE . ' AUTO_INCREMENT = 1 ';
162
            return $this->executeSentenceWithParameters($sql);
163
        }
164
        return false;
165
    }
166
}