baseConnection); return $this->pipeline->process($context, function (QueryContext $ctx): int { return $ctx->connection->execute($ctx->query); }); } public function query(SqlQuery $query): ResultInterface { $context = new QueryContext('query', $query, $this->baseConnection); return $this->pipeline->process($context, function (QueryContext $ctx): ResultInterface { return $ctx->connection->query($ctx->query); }); } public function queryOne(SqlQuery $query): ?array { $context = new QueryContext('queryOne', $query, $this->baseConnection); return $this->pipeline->process($context, function (QueryContext $ctx): ?array { return $ctx->connection->queryOne($ctx->query); }); } public function queryColumn(SqlQuery $query): array { $context = new QueryContext('queryColumn', $query, $this->baseConnection); return $this->pipeline->process($context, function (QueryContext $ctx): array { return $ctx->connection->queryColumn($ctx->query); }); } public function queryScalar(SqlQuery $query): mixed { $context = new QueryContext('queryScalar', $query, $this->baseConnection); return $this->pipeline->process($context, function (QueryContext $ctx): mixed { return $ctx->connection->queryScalar($ctx->query); }); } public function beginTransaction(): void { $emptyQuery = SqlQuery::create(''); $context = new QueryContext('beginTransaction', $emptyQuery, $this->baseConnection); $this->pipeline->process($context, function (QueryContext $ctx): void { $ctx->connection->beginTransaction(); }); } public function commit(): void { $emptyQuery = SqlQuery::create(''); $context = new QueryContext('commit', $emptyQuery, $this->baseConnection); $this->pipeline->process($context, function (QueryContext $ctx): void { $ctx->connection->commit(); }); } public function rollback(): void { $emptyQuery = SqlQuery::create(''); $context = new QueryContext('rollback', $emptyQuery, $this->baseConnection); $this->pipeline->process($context, function (QueryContext $ctx): void { $ctx->connection->rollback(); }); } public function inTransaction(): bool { return $this->baseConnection->inTransaction(); } public function lastInsertId(): string { return $this->baseConnection->lastInsertId(); } public function getPdo(): \PDO { return $this->baseConnection->getPdo(); } public function getPipeline(): MiddlewarePipeline { return $this->pipeline; } public function getBaseConnection(): ConnectionInterface { return $this->baseConnection; } }