/
mget.ts
104 lines (86 loc) · 2.59 KB
/
mget.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
import { ElasticsearchDistribution, ClientParams, ClientMetadata } from '@terascope/types';
import { has } from '@terascope/utils';
export function convertMGetParams(
params: ClientParams.MGetParams,
distributionMeta: ClientMetadata
) {
const {
majorVersion,
distribution,
version
} = distributionMeta;
if (distribution === ElasticsearchDistribution.elasticsearch) {
if (majorVersion === 8) {
const {
type,
body,
...parsedParams
} = params;
const returnParams: Record<string, any> = {
...parsedParams
};
if (body?.docs) {
returnParams.docs = body.docs.map((doc) => {
delete doc._type;
return doc;
});
}
if (body?.ids) {
returnParams.ids = params.body.ids;
}
return returnParams;
}
if (majorVersion === 7) {
const {
type,
...parsedParams
} = params;
return parsedParams;
}
if (majorVersion === 6) {
const {
type = '_doc',
...parsedParams
} = params;
return {
type,
...parsedParams
};
}
}
if (distribution === ElasticsearchDistribution.opensearch) {
if (majorVersion === 1) {
const {
type,
...parsedParams
} = params;
return parsedParams;
}
if (majorVersion === 2) {
const {
type,
...parsedParams
} = params;
if (has(parsedParams, 'body.docs[0]._type')) {
const { body, ...parsedArgs } = parsedParams;
const { docs, ids } = body;
return {
...parsedArgs,
body: {
...(ids !== undefined && { ids }),
...(docs !== undefined && {
docs: docs.map((doc) => {
const { _type, ...docArgs } = doc;
return {
...docArgs
};
})
})
}
};
}
return parsedParams;
}
}
throw new Error(`unsupported ${distribution} version ${version}`);
}