-
Notifications
You must be signed in to change notification settings - Fork 11
/
ClickHouseClientOptions.ts
183 lines (160 loc) · 5.02 KB
/
ClickHouseClientOptions.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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
import {
ClickHouseCompressionMethod,
ClickHouseConnectionProtocol,
ClickHouseDataFormat
} from "../enums";
import * as http from "http";
import * as https from "https";
export class ClickHouseSettings {
/**
* Enables or disables X-ClickHouse-Progress HTTP response headers in clickhouse-server responses.
*
* Default: 0
*/
public send_progress_in_http_headers?: 0 | 1 = 0;
/**
* You can enable response buffering on the server-side. The buffer_size and wait_end_of_query URL parameters are provided for this purpose.
* buffer_size determines the number of bytes in the result to buffer in the server memory.
*
* If a result body is larger than this threshold, the buffer is written to the HTTP channel, and the remaining data is sent directly to the HTTP channel.
* To ensure that the entire response is buffered, set wait_end_of_query=1. In this case, the data that is not stored in memory will be buffered in a temporary server file.
*
* Default: 1
*/
public wait_end_of_query?: 0 | 1 = 1;
/**
* You can enable response buffering on the server-side. The buffer_size and wait_end_of_query URL parameters are provided for this purpose.
* buffer_size determines the number of bytes in the result to buffer in the server memory.
*
* If a result body is larger than this threshold, the buffer is written to the HTTP channel, and the remaining data is sent directly to the HTTP channel.
* To ensure that the entire response is buffered, set wait_end_of_query=1. In this case, the data that is not stored in memory will be buffered in a temporary server file.
*
* Default: 1048576
*/
public buffer_size?: number = 1048576;
}
export class ClickHouseHttpConfig {
/**
* HTTP Interface Protocol
*
* Default: HTTP
*/
public protocol?: ClickHouseConnectionProtocol = ClickHouseConnectionProtocol.HTTP;
/**
* HTTP Agent
*
* `httpAgent` define a custom agent to be used when performing http requests, in node.js.
* This allows options to be added like `keepAlive` that are not enabled by default.
*
* Default: `undefined`
*/
public httpAgent?: http.Agent;
/**
* HTTPS Agent
*
* `httpsAgent` define a custom agent to be used when performing https requests in node.js
* This allows options to be added like `keepAlive` that are not enabled by default.
*
* Default: `undefined`
*/
public httpsAgent?: https.Agent;
/**
* Maximum Body Length
* (Node only option)
*
* Defines the max size of the http request content in bytes allowed
*
* Default: `Infinity`
*/
public maxBodyLength?: number = Infinity;
/**
* Maximum Content Length
*
* Defines the max size of the http response content in bytes allowed in node.js
*
* Default: `Infinity`
*/
public maxContentLength?: number = Infinity;
/**
* Timeout
* Specifies the number of milliseconds before the request times out.
* If the request takes longer than `timeout`, the request will be aborted.
*/
public timeout?: number = 0;
/**
* ClickHouse HTTP Interface Compression Method
*
* Default: NONE
*/
public compression?: ClickHouseCompressionMethod = ClickHouseCompressionMethod.NONE;
}
export class ClickHouseClientOptions {
/**
* ClickHouse Server Identifier
*
* Default: CLICKHOUSE_DEFAULT
*/
public name?: string = 'CLICKHOUSE_DEFAULT';
/**
* ClickHouse Host
*
* Default: 127.0.0.1
*/
public host?: string = "127.0.0.1";
/**
* ClickHouse Port
*
* Default: 8123
*/
public port?: number = 8123;
/**
* ClickHouse Username
*
* Default: default
*/
public username?: string = "default";
/**
* ClickHouse Password
*
* Default: <empty>
*/
public password?: string = "";
/**
* ClickHouse Database
*
* Default: default
*/
public database?: string = "default";
/**
* ClickHouse Input & Output Data Format
*
* Default: JSON
*/
public format?: ClickHouseDataFormat = ClickHouseDataFormat.JSON;
/**
* Axios HTTP Request / Response Configuration
*/
public httpConfig?: ClickHouseHttpConfig = new ClickHouseHttpConfig();
/**
* ClickHouse HTTP Interface Connection Settings
*/
public settings?: ClickHouseSettings = new ClickHouseSettings();
/**
* Logger Instance
*
* Default: console
* @note A logger instance must implement `Console` interface
*/
public logger?: Console = console;
/**
* ClickHouse Connection Options
*/
constructor() {
if (this.settings) {
this.settings = Object.assign(new ClickHouseSettings(), this.settings);
}
if (this.httpConfig) {
this.httpConfig = Object.assign(new ClickHouseHttpConfig(), this.httpConfig);
}
}
}