Code Duplication    Length = 25-27 lines in 4 locations

src/EventSourcing/EventStore/Vendor/DoctrineDbalEventStore.php 2 locations

@@ 82-106 (lines=25) @@
79
     * @param string $streamId
80
     * @return EventStreamInterface
81
     */
82
    public function readFullStream($streamId)
83
    {
84
        $stmt = $this->connection->prepare(
85
            'SELECT *
86
             FROM events
87
             WHERE stream_id = :streamId'
88
        );
89
        $stmt->bindValue(':streamId', $streamId);
90
        $stmt->execute();
91
        $results = $stmt->fetchAll();
92
93
        $storedEvents = array_map(function($result) {
94
            return new StoredEvent(
95
                $result['id'],
96
                $result['stream_id'],
97
                $result['type'],
98
                $result['event'],
99
                $result['metadata'],
100
                new \DateTimeImmutable($result['occurred_on']),
101
                Version::fromString($result['version'])
102
            );
103
        }, $results);
104
105
        return $this->domainEventStreamFromStoredEvents($storedEvents);
106
    }
107
108
    /**
109
     * @return EventStreamInterface[]
@@ 129-155 (lines=27) @@
126
     * @param Version $version
127
     * @return EventStreamInterface
128
     */
129
    protected function readStoredEventsOfTypeAndVersion($type, $version)
130
    {
131
        $stmt = $this->connection->prepare(
132
            'SELECT *
133
             FROM events
134
             WHERE type = :type
135
             AND version = :version'
136
        );
137
        $stmt->bindValue(':type', $type);
138
        $stmt->bindValue(':version', $version);
139
        $stmt->execute();
140
        $results = $stmt->fetchAll();
141
142
        $storedEvents = array_map(function($result) {
143
            return new StoredEvent(
144
                $result['id'],
145
                $result['stream_id'],
146
                $result['type'],
147
                $result['event'],
148
                $result['metadata'],
149
                new \DateTimeImmutable($result['occurred_on']),
150
                Version::fromString($result['version'])
151
            );
152
        }, $results);
153
154
        return new EventStream($storedEvents);
155
    }
156
157
    /**
158
     * @param string $streamId

src/EventSourcing/EventStore/Vendor/MySqlJsonEventStore.php 2 locations

@@ 83-107 (lines=25) @@
80
     * @param string $streamId
81
     * @return EventStreamInterface
82
     */
83
    public function readFullStream($streamId)
84
    {
85
        $stmt = $this->connection->prepare(
86
            'SELECT *
87
             FROM events
88
             WHERE stream_id = :streamId'
89
        );
90
        $stmt->bindValue(':streamId', $streamId);
91
        $stmt->execute();
92
        $results = $stmt->fetchAll();
93
94
        $storedEvents = array_map(function($event) {
95
            return new StoredEvent(
96
                $event['id'],
97
                $event['stream_id'],
98
                $event['type'],
99
                $event['event'],
100
                $event['metadata'],
101
                new \DateTimeImmutable($event['occurred_on']),
102
                Version::fromString($event['version'])
103
            );
104
        }, $results);
105
106
        return $this->domainEventStreamFromStoredEvents($storedEvents);
107
    }
108
109
    /**
110
     * @return EventStreamInterface[]
@@ 198-224 (lines=27) @@
195
     * @param Version $version
196
     * @return EventStreamInterface
197
     */
198
    protected function readStoredEventsOfTypeAndVersion($type, $version)
199
    {
200
        $stmt = $this->connection->prepare(
201
            'SELECT *
202
             FROM events
203
             WHERE type = :type
204
             AND version = :version'
205
        );
206
        $stmt->bindValue(':type', $type);
207
        $stmt->bindValue(':version', $version);
208
        $stmt->execute();
209
        $results = $stmt->fetchAll();
210
211
        $storedEvents = array_map(function($result) {
212
            return new StoredEvent(
213
                $result['id'],
214
                $result['stream_id'],
215
                $result['type'],
216
                $result['event'],
217
                $result['metadata'],
218
                new \DateTimeImmutable($result['occurred_on']),
219
                Version::fromString($result['version'])
220
            );
221
        }, $results);
222
223
        return new EventStream($storedEvents);
224
    }
225
226
    public function initialize()
227
    {