-
Notifications
You must be signed in to change notification settings - Fork 36
/
Copy pathIOperation.ts
98 lines (77 loc) · 2.33 KB
/
IOperation.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
import { Readable, ReadableOptions } from 'node:stream';
import { TGetOperationStatusResp, TTableSchema } from '../../thrift/TCLIService_types';
import Status from '../dto/Status';
export type OperationStatusCallback = (progress: TGetOperationStatusResp) => unknown;
export interface WaitUntilReadyOptions {
progress?: boolean;
callback?: OperationStatusCallback;
}
export interface FinishedOptions extends WaitUntilReadyOptions {
// no other options
}
export interface FetchOptions extends WaitUntilReadyOptions {
maxRows?: number;
// Disables internal buffer used to ensure a consistent chunks size.
// When set to `true`, returned chunks size may vary (and may differ from `maxRows`)
disableBuffering?: boolean;
}
export interface GetSchemaOptions extends WaitUntilReadyOptions {
// no other options
}
export interface IteratorOptions extends FetchOptions {
autoClose?: boolean; // defaults to `false`
}
export interface IOperationChunksIterator extends AsyncIterableIterator<Array<object>> {
readonly operation: IOperation;
}
export interface IOperationRowsIterator extends AsyncIterableIterator<object> {
readonly operation: IOperation;
}
export interface NodeStreamOptions {
mode?: 'chunks' | 'rows'; // defaults to 'chunks'
iteratorOptions?: IteratorOptions;
streamOptions?: ReadableOptions;
}
export default interface IOperation {
/**
* Operation identifier
*/
readonly id: string;
/**
* Fetch a portion of data
*/
fetchChunk(options?: FetchOptions): Promise<Array<object>>;
/**
* Fetch all the data
*/
fetchAll(options?: FetchOptions): Promise<Array<object>>;
/**
* Request status of operation
*
* @param progress
*/
status(progress?: boolean): Promise<TGetOperationStatusResp>;
/**
* Cancel operation
*/
cancel(): Promise<Status>;
/**
* Close operation
*/
close(): Promise<Status>;
/**
* Waits until operation is finished
*/
finished(options?: FinishedOptions): Promise<void>;
/**
* Check if operation hasMoreRows
*/
hasMoreRows(): Promise<boolean>;
/**
* Fetch schema
*/
getSchema(options?: GetSchemaOptions): Promise<TTableSchema | null>;
iterateChunks(options?: IteratorOptions): IOperationChunksIterator;
iterateRows(options?: IteratorOptions): IOperationRowsIterator;
toNodeStream(options?: NodeStreamOptions): Readable;
}