Skip to content

Commit 099a346

Browse files
authored
refactor: pass parameters around in clients (#240)
1 parent 21b045a commit 099a346

File tree

2 files changed

+34
-29
lines changed

2 files changed

+34
-29
lines changed

src/Client/PsrClickHouseAsyncClient.php

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -39,16 +39,7 @@ public function __construct(
3939
*/
4040
public function select(string $query, Format $outputFormat, array $settings = []): PromiseInterface
4141
{
42-
$formatClause = $outputFormat::toSql();
43-
44-
return $this->executeRequest(
45-
<<<CLICKHOUSE
46-
$query
47-
$formatClause
48-
CLICKHOUSE,
49-
$settings,
50-
static fn (ResponseInterface $response): Output => $outputFormat::output($response->getBody()->__toString())
51-
);
42+
return $this->selectWithParams($query, [], $outputFormat, $settings);
5243
}
5344

5445
/**
@@ -62,10 +53,17 @@ public function selectWithParams(
6253
Format $outputFormat,
6354
array $settings = [],
6455
): PromiseInterface {
65-
return $this->select(
66-
$this->sqlFactory->createWithParameters($query, $params),
67-
$outputFormat,
56+
$formatClause = $outputFormat::toSql();
57+
58+
$sql = $this->sqlFactory->createWithParameters($query, $params);
59+
60+
return $this->executeRequest(
61+
<<<CLICKHOUSE
62+
$sql
63+
$formatClause
64+
CLICKHOUSE,
6865
$settings,
66+
static fn (ResponseInterface $response): Output => $outputFormat::output($response->getBody()->__toString())
6967
);
7068
}
7169

src/Client/PsrClickHouseClient.php

Lines changed: 23 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
use SimPod\ClickHouseClient\Client\Http\RequestOptions;
1313
use SimPod\ClickHouseClient\Exception\CannotInsert;
1414
use SimPod\ClickHouseClient\Exception\ServerError;
15+
use SimPod\ClickHouseClient\Exception\UnsupportedValue;
1516
use SimPod\ClickHouseClient\Format\Format;
1617
use SimPod\ClickHouseClient\Output\Output;
1718
use SimPod\ClickHouseClient\Sql\Escaper;
@@ -23,6 +24,7 @@
2324
use function array_map;
2425
use function implode;
2526
use function is_int;
27+
use function SimPod\ClickHouseClient\absurd;
2628
use function sprintf;
2729

2830
class PsrClickHouseClient implements ClickHouseClient
@@ -44,38 +46,43 @@ public function __construct(
4446

4547
public function executeQuery(string $query, array $settings = []): void
4648
{
47-
$this->executeRequest($query, $settings);
49+
$this->executeRequest($query, settings: $settings);
4850
}
4951

5052
public function executeQueryWithParams(string $query, array $params, array $settings = []): void
5153
{
52-
$this->executeQuery($this->sqlFactory->createWithParameters($query, $params), $settings);
54+
$this->executeRequest(
55+
$this->sqlFactory->createWithParameters($query, $params),
56+
settings: $settings,
57+
);
5358
}
5459

5560
public function select(string $query, Format $outputFormat, array $settings = []): Output
61+
{
62+
try {
63+
return $this->selectWithParams($query, params: [], outputFormat: $outputFormat, settings: $settings);
64+
} catch (UnsupportedValue) {
65+
absurd();
66+
}
67+
}
68+
69+
public function selectWithParams(string $query, array $params, Format $outputFormat, array $settings = []): Output
5670
{
5771
$formatClause = $outputFormat::toSql();
5872

73+
$sql = $this->sqlFactory->createWithParameters($query, $params);
74+
5975
$response = $this->executeRequest(
6076
<<<CLICKHOUSE
61-
$query
77+
$sql
6278
$formatClause
6379
CLICKHOUSE,
64-
$settings,
80+
settings: $settings,
6581
);
6682

6783
return $outputFormat::output($response->getBody()->__toString());
6884
}
6985

70-
public function selectWithParams(string $query, array $params, Format $outputFormat, array $settings = []): Output
71-
{
72-
return $this->select(
73-
$this->sqlFactory->createWithParameters($query, $params),
74-
$outputFormat,
75-
$settings,
76-
);
77-
}
78-
7986
public function insert(string $table, array $values, array|null $columns = null, array $settings = []): void
8087
{
8188
if ($values === []) {
@@ -111,7 +118,7 @@ public function insert(string $table, array $values, array|null $columns = null,
111118
$columnsSql
112119
VALUES $valuesSql
113120
CLICKHOUSE,
114-
$settings,
121+
settings: $settings,
115122
);
116123
}
117124

@@ -125,7 +132,7 @@ public function insertWithFormat(string $table, Format $inputFormat, string $dat
125132
<<<CLICKHOUSE
126133
INSERT INTO $table $formatSql $data
127134
CLICKHOUSE,
128-
$settings,
135+
settings: $settings,
129136
);
130137
}
131138

@@ -135,7 +142,7 @@ public function insertWithFormat(string $table, Format $inputFormat, string $dat
135142
* @throws ServerError
136143
* @throws ClientExceptionInterface
137144
*/
138-
private function executeRequest(string $sql, array $settings = []): ResponseInterface
145+
private function executeRequest(string $sql, array $settings): ResponseInterface
139146
{
140147
$request = $this->requestFactory->prepareRequest(
141148
new RequestOptions(

0 commit comments

Comments
 (0)