/** * @param Contract $aggregateType * @param EventStream $eventStream * * @throws \Exception */ public function append(Contract $aggregateType, EventStream $eventStream) { $statement = $this->insertQuery->prepare(); $commitIdentifier = CommitIdentifier::generate()->toString(); $committedAt = new \DateTime(); while ($eventStream->hasNext()) { $event = $eventStream->next(); $statement->bindValue(':aggregate_id', $event->aggregateRootIdentifier()->toString()); $statement->bindValue(':aggregate_type', $aggregateType->toString()); $statement->bindValue(':aggregate_version', $event->sequenceNumber()); $statement->bindValue(':event_id', $event->identifier()->toString()); $statement->bindValue(':event_payload', $this->eventSerializer->serializePayload($event)); $statement->bindValue(':event_payload_type', $event->payloadType()->toString()); $statement->bindValue(':event_metadata', $this->eventSerializer->serializeMetadata($event)); $statement->bindValue(':event_metadata_type', $event->metadataType()->toString()); $statement->bindValue(':commit_id', $commitIdentifier); $statement->bindValue(':committed_at', $committedAt->format('UTC')); $statement->execute(); $statement->closeCursor(); } }
/** * @param CommitIdentifier $identifier * * @return bool */ public function equals(CommitIdentifier $identifier) { return $this->uuid->toString() === $identifier->toString(); }
public function testCanConfirmItsInequalityWithAnotherCommitIdentifier() { $commitIdentifier1 = CommitIdentifier::generate(); $commitIdentifier2 = CommitIdentifier::generate(); $this->assertFalse($commitIdentifier1->equals($commitIdentifier2)); }