|
1 |
| -import { RedisArgument, Command } from '@redis/client/dist/lib/RESP/types'; |
| 1 | +import { RedisArgument, Command, NumberReply, BlobStringReply, TuplesToMapReply, UnwrapReply, Resp2Reply } from '@redis/client/dist/lib/RESP/types'; |
| 2 | + |
| 3 | +export type CfInfoReplyMap = TuplesToMapReply<[ |
| 4 | + [BlobStringReply<'Size'>, NumberReply], |
| 5 | + [BlobStringReply<'Number of buckets'>, NumberReply], |
| 6 | + [BlobStringReply<'Number of filters'>, NumberReply], |
| 7 | + [BlobStringReply<'Number of items inserted'>, NumberReply], |
| 8 | + [BlobStringReply<'Number of items deleted'>, NumberReply], |
| 9 | + [BlobStringReply<'Bucket size'>, NumberReply], |
| 10 | + [BlobStringReply<'Expansion rate'>, NumberReply], |
| 11 | + [BlobStringReply<'Max iterations'>, NumberReply] |
| 12 | +]>; |
| 13 | + |
| 14 | +export interface CfInfoReply { |
| 15 | + size: NumberReply; |
| 16 | + numberOfBuckets: NumberReply; |
| 17 | + numberOfFilters: NumberReply; |
| 18 | + numberOfInsertedItems: NumberReply; |
| 19 | + numberOfDeletedItems: NumberReply; |
| 20 | + bucketSize: NumberReply; |
| 21 | + expansionRate: NumberReply; |
| 22 | + maxIteration: NumberReply; |
| 23 | +} |
2 | 24 |
|
3 | 25 | export default {
|
4 | 26 | FIRST_KEY_INDEX: 1,
|
5 | 27 | IS_READ_ONLY: true,
|
6 | 28 | transformArguments(key: RedisArgument) {
|
7 | 29 | return ['CF.INFO', key];
|
8 | 30 | },
|
9 |
| - // TODO |
10 |
| - // export type InfoRawReply = [ |
11 |
| - // _: string, |
12 |
| - // size: number, |
13 |
| - // _: string, |
14 |
| - // numberOfBuckets: number, |
15 |
| - // _: string, |
16 |
| - // numberOfFilters: number, |
17 |
| - // _: string, |
18 |
| - // numberOfInsertedItems: number, |
19 |
| - // _: string, |
20 |
| - // numberOfDeletedItems: number, |
21 |
| - // _: string, |
22 |
| - // bucketSize: number, |
23 |
| - // _: string, |
24 |
| - // expansionRate: number, |
25 |
| - // _: string, |
26 |
| - // maxIteration: number |
27 |
| - // ]; |
28 |
| - |
29 |
| - // export interface InfoReply { |
30 |
| - // size: number; |
31 |
| - // numberOfBuckets: number; |
32 |
| - // numberOfFilters: number; |
33 |
| - // numberOfInsertedItems: number; |
34 |
| - // numberOfDeletedItems: number; |
35 |
| - // bucketSize: number; |
36 |
| - // expansionRate: number; |
37 |
| - // maxIteration: number; |
38 |
| - // } |
39 |
| - |
40 |
| - // export function transformReply(reply: InfoRawReply): InfoReply { |
41 |
| - // return { |
42 |
| - // size: reply[1], |
43 |
| - // numberOfBuckets: reply[3], |
44 |
| - // numberOfFilters: reply[5], |
45 |
| - // numberOfInsertedItems: reply[7], |
46 |
| - // numberOfDeletedItems: reply[9], |
47 |
| - // bucketSize: reply[11], |
48 |
| - // expansionRate: reply[13], |
49 |
| - // maxIteration: reply[15] |
50 |
| - // }; |
51 |
| - // } |
52 |
| - transformReply: undefined as unknown as () => any |
| 31 | + |
| 32 | + transformReply: { |
| 33 | + 2: (reply: UnwrapReply<Resp2Reply<CfInfoReplyMap>>): CfInfoReply => { |
| 34 | + return { |
| 35 | + size: reply[1], |
| 36 | + numberOfBuckets: reply[3], |
| 37 | + numberOfFilters: reply[5], |
| 38 | + numberOfInsertedItems: reply[7], |
| 39 | + numberOfDeletedItems: reply[9], |
| 40 | + bucketSize: reply[11], |
| 41 | + expansionRate: reply[13], |
| 42 | + maxIteration: reply[15] |
| 43 | + } |
| 44 | + }, |
| 45 | + 3: (reply: UnwrapReply<CfInfoReplyMap>): CfInfoReply => { |
| 46 | + if (reply instanceof Map) { |
| 47 | + throw new Error("BF.INFO shouldn't return a map type in resp3 anymore"); |
| 48 | +/* |
| 49 | + return { |
| 50 | + size: reply.get("Size" as unknown as BlobStringReply<"Size">)!, |
| 51 | + numberOfBuckets: reply.get('Number of buckets' as unknown as BlobStringReply<'Number of buckets'>)!, |
| 52 | + numberOfFilters: reply.get('Number of filters' as unknown as BlobStringReply<"Number of filters">)!, |
| 53 | + numberOfInsertedItems: reply.get('Number of items inserted' as unknown as BlobStringReply<'Number of items inserted'>)!, |
| 54 | + numberOfDeletedItems: reply.get('Number of items deleted' as unknown as BlobStringReply<'Number of items deleted'>)!, |
| 55 | + bucketSize: reply.get('Bucket size' as unknown as BlobStringReply<'Bucket size'>)!, |
| 56 | + expansionRate: reply.get('Expansion rate' as unknown as BlobStringReply<'Expansion rate'>)!, |
| 57 | + maxIteration: reply.get('Max iterations' as unknown as BlobStringReply<'Max iterations'>)! |
| 58 | + } |
| 59 | +*/ |
| 60 | + } else if (reply instanceof Array) { |
| 61 | + throw new Error("BF.INFO shouldn't return a array type in resp3 anymore"); |
| 62 | +/* |
| 63 | + return { |
| 64 | + size: reply[1], |
| 65 | + numberOfBuckets: reply[3], |
| 66 | + numberOfFilters: reply[5], |
| 67 | + numberOfInsertedItems: reply[7], |
| 68 | + numberOfDeletedItems: reply[9], |
| 69 | + bucketSize: reply[11], |
| 70 | + expansionRate: reply[13], |
| 71 | + maxIteration: reply[15] |
| 72 | + } |
| 73 | +*/ |
| 74 | + } else { |
| 75 | + return { |
| 76 | + size: reply['Size'], |
| 77 | + numberOfBuckets: reply['Number of buckets'], |
| 78 | + numberOfFilters: reply['Number of filters'], |
| 79 | + numberOfInsertedItems: reply['Number of items inserted'], |
| 80 | + numberOfDeletedItems: reply['Number of items deleted'], |
| 81 | + bucketSize: reply['Bucket size'], |
| 82 | + expansionRate: reply['Expansion rate'], |
| 83 | + maxIteration: reply['Max iterations'] |
| 84 | + } |
| 85 | + } |
| 86 | + } |
| 87 | + }, |
| 88 | + ignoreTypeMapping: true |
53 | 89 | } as const satisfies Command;
|
0 commit comments