Code Duplication    Length = 23-27 lines in 6 locations

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

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

@@ 84-108 (lines=25) @@
81
     * @param string $streamId
82
     * @return EventStreamInterface
83
     */
84
    public function readFullStream($streamId)
85
    {
86
        $stmt = $this->connection->prepare(
87
            'SELECT *
88
             FROM events
89
             WHERE stream_id = :streamId'
90
        );
91
        $stmt->bindValue(':streamId', $streamId);
92
        $stmt->execute();
93
        $results = $stmt->fetchAll();
94
95
        $storedEvents = array_map(function($event) {
96
            return new StoredEvent(
97
                $event['id'],
98
                $event['stream_id'],
99
                $event['type'],
100
                $event['event'],
101
                $event['metadata'],
102
                new \DateTimeImmutable($event['occurred_on']),
103
                Version::fromString($event['version'])
104
            );
105
        }, $results);
106
107
        return $this->domainEventStreamFromStoredEvents($storedEvents);
108
    }
109
110
    /**
111
     * @return EventStreamInterface[]
@@ 121-143 (lines=23) @@
118
    /**
119
     * @return EventStreamInterface
120
     */
121
    public function readAllEvents()
122
    {
123
        $stmt = $this->connection->prepare(
124
            'SELECT *
125
             FROM events'
126
        );
127
        $stmt->execute();
128
        $results = $stmt->fetchAll();
129
130
        $storedEvents = array_map(function($event) {
131
            return new StoredEvent(
132
                $event['id'],
133
                $event['stream_id'],
134
                $event['type'],
135
                $event['event'],
136
                $event['metadata'],
137
                new \DateTimeImmutable($event['occurred_on']),
138
                Version::fromString($event['version'])
139
            );
140
        }, $results);
141
142
        return $this->domainEventStreamFromStoredEvents($storedEvents);
143
    }
144
145
    /**
146
     * @param string $streamId
@@ 218-244 (lines=27) @@
215
     * @param Version $version
216
     * @return EventStreamInterface
217
     */
218
    protected function readStoredEventsOfTypeAndVersion($type, $version)
219
    {
220
        $stmt = $this->connection->prepare(
221
            'SELECT *
222
             FROM events
223
             WHERE type = :type
224
             AND version = :version'
225
        );
226
        $stmt->bindValue(':type', $type);
227
        $stmt->bindValue(':version', $version);
228
        $stmt->execute();
229
        $results = $stmt->fetchAll();
230
231
        $storedEvents = array_map(function($result) {
232
            return new StoredEvent(
233
                $result['id'],
234
                $result['stream_id'],
235
                $result['type'],
236
                $result['event'],
237
                $result['metadata'],
238
                new \DateTimeImmutable($result['occurred_on']),
239
                Version::fromString($result['version'])
240
            );
241
        }, $results);
242
243
        return new EventStream($storedEvents);
244
    }
245
246
    public function initialize()
247
    {