-
Notifications
You must be signed in to change notification settings - Fork 35
/
Copy pathconnection.ts
46 lines (42 loc) · 1.1 KB
/
connection.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
import type { ClickHouseSettings } from '../settings'
export type HttpHeader = number | string | string[]
export type HttpHeaders = Record<string, HttpHeader | undefined>
export function withCompressionHeaders({
headers,
enable_request_compression,
enable_response_compression,
}: {
headers: HttpHeaders
enable_request_compression: boolean | undefined
enable_response_compression: boolean | undefined
}): Record<string, string> {
return {
...headers,
...(enable_response_compression ? { 'Accept-Encoding': 'gzip' } : {}),
...(enable_request_compression ? { 'Content-Encoding': 'gzip' } : {}),
}
}
export function withHttpSettings(
clickhouse_settings?: ClickHouseSettings,
compression?: boolean,
): ClickHouseSettings {
return {
...(compression
? {
enable_http_compression: 1,
}
: {}),
...clickhouse_settings,
}
}
export function isSuccessfulResponse(
statusCode?: number,
headers: any = {},
): boolean {
return Boolean(
statusCode &&
200 <= statusCode &&
statusCode < 300 &&
!headers['x-clickhouse-exception-code'],
)
}