Code Duplication    Length = 23-27 lines in 6 locations

src/EventSourcing/EventStore/Vendor/DoctrineDbalEventStore.php 3 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(new EventStream($storedEvents));
106
    }
107
108
    /**
109
     * @return EventStreamInterface[]
@@ 129-151 (lines=23) @@
126
    /**
127
     * @return EventStreamInterface
128
     */
129
    public function readAllEvents()
130
    {
131
        $stmt = $this->connection->prepare(
132
            'SELECT *
133
             FROM events'
134
        );
135
        $stmt->execute();
136
        $results = $stmt->fetchAll();
137
138
        $storedEvents = array_map(function($result) {
139
            return new StoredEvent(
140
                $result['id'],
141
                $result['stream_id'],
142
                $result['type'],
143
                $result['event'],
144
                $result['metadata'],
145
                new \DateTimeImmutable($result['occurred_on']),
146
                Version::fromString($result['version'])
147
            );
148
        }, $results);
149
150
        return $this->domainEventStreamFromStoredEvents(new EventStream($storedEvents));
151
    }
152
153
    /**
154
     * @param string $type
@@ 158-184 (lines=27) @@
155
     * @param Version $version
156
     * @return EventStreamInterface
157
     */
158
    protected function readStoredEventsOfTypeAndVersion($type, $version)
159
    {
160
        $stmt = $this->connection->prepare(
161
            'SELECT *
162
             FROM events
163
             WHERE type = :type
164
             AND version = :version'
165
        );
166
        $stmt->bindValue(':type', $type);
167
        $stmt->bindValue(':version', $version);
168
        $stmt->execute();
169
        $results = $stmt->fetchAll();
170
171
        $storedEvents = array_map(function($result) {
172
            return new StoredEvent(
173
                $result['id'],
174
                $result['stream_id'],
175
                $result['type'],
176
                $result['event'],
177
                $result['metadata'],
178
                new \DateTimeImmutable($result['occurred_on']),
179
                Version::fromString($result['version'])
180
            );
181
        }, $results);
182
183
        return new EventStream($storedEvents);
184
    }
185
186
    /**
187
     * @param string $streamId

src/EventSourcing/EventStore/Vendor/MySqlJsonEventStore.php 3 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(new EventStream($storedEvents));
107
    }
108
109
    /**
110
     * @return EventStreamInterface[]
@@ 130-152 (lines=23) @@
127
    /**
128
     * @return EventStreamInterface
129
     */
130
    public function readAllEvents()
131
    {
132
        $stmt = $this->connection->prepare(
133
            'SELECT *
134
             FROM events'
135
        );
136
        $stmt->execute();
137
        $results = $stmt->fetchAll();
138
139
        $storedEvents = array_map(function($event) {
140
            return new StoredEvent(
141
                $event['id'],
142
                $event['stream_id'],
143
                $event['type'],
144
                $event['event'],
145
                $event['metadata'],
146
                new \DateTimeImmutable($event['occurred_on']),
147
                Version::fromString($event['version'])
148
            );
149
        }, $results);
150
151
        return $this->domainEventStreamFromStoredEvents(new EventStream($storedEvents));
152
    }
153
154
    /**
155
     * @param string $streamId
@@ 230-256 (lines=27) @@
227
     * @param Version $version
228
     * @return EventStreamInterface
229
     */
230
    protected function readStoredEventsOfTypeAndVersion($type, $version)
231
    {
232
        $stmt = $this->connection->prepare(
233
            'SELECT *
234
             FROM events
235
             WHERE type = :type
236
             AND version = :version'
237
        );
238
        $stmt->bindValue(':type', $type);
239
        $stmt->bindValue(':version', $version);
240
        $stmt->execute();
241
        $results = $stmt->fetchAll();
242
243
        $storedEvents = array_map(function($result) {
244
            return new StoredEvent(
245
                $result['id'],
246
                $result['stream_id'],
247
                $result['type'],
248
                $result['event'],
249
                $result['metadata'],
250
                new \DateTimeImmutable($result['occurred_on']),
251
                Version::fromString($result['version'])
252
            );
253
        }, $results);
254
255
        return new EventStream($storedEvents);
256
    }
257
258
    public function initialize()
259
    {