7
7
SetKeyParameters ,
8
8
StreamKeyParameters ,
9
9
} from '../../types'
10
+ import { stringToBuffer } from '../utils'
10
11
11
12
const bufferPathMask = '/databases/databaseId/keys?encoding=buffer'
12
13
export class APIKeyRequests {
@@ -15,20 +16,44 @@ export class APIKeyRequests {
15
16
private databaseAPIRequests : DatabaseAPIRequests ,
16
17
) { }
17
18
19
+ async addStringKeyApi (
20
+ keyParameters : { keyName : string ; value : string ; expire ?: number } ,
21
+ databaseParameters : AddNewDatabaseParameters ,
22
+ ) : Promise < void > {
23
+ const databaseId = await this . databaseAPIRequests . getDatabaseIdByName (
24
+ databaseParameters . databaseName ,
25
+ )
26
+ const requestBody = {
27
+ keyName : stringToBuffer ( keyParameters . keyName ) ,
28
+ value : stringToBuffer ( keyParameters . value ) ,
29
+ expire : keyParameters ?. expire ,
30
+ }
31
+
32
+ const response = await this . apiClient . post (
33
+ `/databases/${ databaseId } /string?encoding=buffer` ,
34
+ requestBody ,
35
+ )
36
+
37
+ if ( response . status !== 201 ) {
38
+ throw new Error ( 'The creation of new String key request failed' )
39
+ }
40
+ }
41
+
18
42
async addHashKeyApi (
19
- keyParameters : HashKeyParameters ,
43
+ keyParameters : HashKeyParameters & { expire ?: number } ,
20
44
databaseParameters : AddNewDatabaseParameters ,
21
45
) : Promise < void > {
22
46
const databaseId = await this . databaseAPIRequests . getDatabaseIdByName (
23
47
databaseParameters . databaseName ,
24
48
)
25
49
const requestBody = {
26
- keyName : Buffer . from ( keyParameters . keyName , 'utf-8' ) ,
50
+ keyName : stringToBuffer ( keyParameters . keyName ) ,
27
51
fields : keyParameters . fields . map ( ( fields ) => ( {
28
52
...fields ,
29
- field : Buffer . from ( fields . field , 'utf-8' ) ,
30
- value : Buffer . from ( fields . value , 'utf-8' ) ,
53
+ field : stringToBuffer ( fields . field ) ,
54
+ value : stringToBuffer ( fields . value ) ,
31
55
} ) ) ,
56
+ expire : keyParameters ?. expire ,
32
57
}
33
58
const response = await this . apiClient . post (
34
59
`/databases/${ databaseId } /hash?encoding=buffer` ,
@@ -38,22 +63,48 @@ export class APIKeyRequests {
38
63
throw new Error ( 'The creation of new Hash key request failed' )
39
64
}
40
65
66
+ async addListKeyApi (
67
+ keyParameters : { keyName : string ; elements : string [ ] ; expire ?: number } ,
68
+ databaseParameters : AddNewDatabaseParameters ,
69
+ ) : Promise < void > {
70
+ const databaseId = await this . databaseAPIRequests . getDatabaseIdByName (
71
+ databaseParameters . databaseName ,
72
+ )
73
+ const requestBody = {
74
+ keyName : stringToBuffer ( keyParameters . keyName ) ,
75
+ elements : keyParameters . elements . map ( ( element ) =>
76
+ stringToBuffer ( element ) ,
77
+ ) ,
78
+ expire : keyParameters ?. expire ,
79
+ }
80
+
81
+ const response = await this . apiClient . post (
82
+ `/databases/${ databaseId } /list?encoding=buffer` ,
83
+ requestBody ,
84
+ )
85
+
86
+ if ( response . status !== 201 ) {
87
+ throw new Error ( 'The creation of new List key request failed' )
88
+ }
89
+ }
90
+
41
91
async addStreamKeyApi (
42
- keyParameters : StreamKeyParameters ,
92
+ keyParameters : StreamKeyParameters & { expire ?: number } ,
43
93
databaseParameters : AddNewDatabaseParameters ,
44
94
) : Promise < void > {
45
95
const databaseId = await this . databaseAPIRequests . getDatabaseIdByName (
46
96
databaseParameters . databaseName ,
47
97
)
48
98
const requestBody = {
49
- keyName : Buffer . from ( keyParameters . keyName , 'utf-8' ) ,
99
+ keyName : stringToBuffer ( keyParameters . keyName ) ,
50
100
entries : keyParameters . entries . map ( ( member ) => ( {
51
101
...member ,
52
102
fields : member . fields . map ( ( { name, value } ) => ( {
53
- name : Buffer . from ( name , 'utf-8' ) ,
54
- value : Buffer . from ( value , 'utf-8' ) ,
103
+ name : stringToBuffer ( name ) ,
104
+ value : stringToBuffer ( value ) ,
55
105
} ) ) ,
56
106
} ) ) ,
107
+ expire : keyParameters ?. expire ,
57
108
}
58
109
const response = await this . apiClient . post (
59
110
`/databases/${ databaseId } /streams?encoding=buffer` ,
@@ -64,17 +115,18 @@ export class APIKeyRequests {
64
115
}
65
116
66
117
async addSetKeyApi (
67
- keyParameters : SetKeyParameters ,
118
+ keyParameters : SetKeyParameters & { expire ?: number } ,
68
119
databaseParameters : AddNewDatabaseParameters ,
69
120
) : Promise < void > {
70
121
const databaseId = await this . databaseAPIRequests . getDatabaseIdByName (
71
122
databaseParameters . databaseName ,
72
123
)
73
124
const requestBody = {
74
- keyName : Buffer . from ( keyParameters . keyName , 'utf-8' ) ,
125
+ keyName : stringToBuffer ( keyParameters . keyName ) ,
75
126
members : keyParameters . members . map ( ( member ) =>
76
- Buffer . from ( member , 'utf-8' ) ,
127
+ stringToBuffer ( member ) ,
77
128
) ,
129
+ expire : keyParameters ?. expire ,
78
130
}
79
131
const response = await this . apiClient . post (
80
132
`/databases/${ databaseId } /set?encoding=buffer` ,
@@ -84,6 +136,62 @@ export class APIKeyRequests {
84
136
throw new Error ( 'The creation of new Set key request failed' )
85
137
}
86
138
139
+ async addZSetKeyApi (
140
+ keyParameters : {
141
+ keyName : string
142
+ members : Array < { name : string ; score : number } >
143
+ expire ?: number
144
+ } ,
145
+ databaseParameters : AddNewDatabaseParameters ,
146
+ ) : Promise < void > {
147
+ const databaseId = await this . databaseAPIRequests . getDatabaseIdByName (
148
+ databaseParameters . databaseName ,
149
+ )
150
+ const requestBody = {
151
+ keyName : stringToBuffer ( keyParameters . keyName ) ,
152
+ members : keyParameters . members . map ( ( member ) => ( {
153
+ name : stringToBuffer ( member . name ) ,
154
+ score : member . score ,
155
+ } ) ) ,
156
+ expire : keyParameters ?. expire ,
157
+ }
158
+
159
+ const response = await this . apiClient . post (
160
+ `/databases/${ databaseId } /zSet?encoding=buffer` ,
161
+ requestBody ,
162
+ )
163
+
164
+ if ( response . status !== 201 ) {
165
+ throw new Error ( 'The creation of new ZSet key request failed' )
166
+ }
167
+ }
168
+
169
+ async addJsonKeyApi (
170
+ keyParameters : { keyName : string ; value : any ; expire ?: number } ,
171
+ databaseParameters : AddNewDatabaseParameters ,
172
+ ) : Promise < void > {
173
+ const databaseId = await this . databaseAPIRequests . getDatabaseIdByName (
174
+ databaseParameters . databaseName ,
175
+ )
176
+ const requestBody : any = {
177
+ keyName : stringToBuffer ( keyParameters . keyName ) ,
178
+ data : JSON . stringify ( keyParameters . value ) ,
179
+ }
180
+
181
+ if ( keyParameters . expire ) {
182
+ requestBody . expire = keyParameters . expire
183
+ }
184
+
185
+ const response = await this . apiClient . post (
186
+ `/databases/${ databaseId } /rejson-rl?encoding=buffer` ,
187
+ requestBody ,
188
+ )
189
+
190
+ if ( response . status !== 201 ) {
191
+ throw new Error ( 'The creation of new JSON key request failed' )
192
+ }
193
+ }
194
+
87
195
async searchKeyByNameApi (
88
196
keyName : string ,
89
197
databaseName : string ,
@@ -92,9 +200,8 @@ export class APIKeyRequests {
92
200
cursor : '0' ,
93
201
match : keyName ,
94
202
}
95
- const databaseId = await this . databaseAPIRequests . getDatabaseIdByName (
96
- databaseName ,
97
- )
203
+ const databaseId =
204
+ await this . databaseAPIRequests . getDatabaseIdByName ( databaseName )
98
205
const response = await this . apiClient . post (
99
206
bufferPathMask . replace ( 'databaseId' , databaseId ) ,
100
207
requestBody ,
@@ -108,15 +215,14 @@ export class APIKeyRequests {
108
215
keyName : string ,
109
216
databaseName : string ,
110
217
) : Promise < void > {
111
- const databaseId = await this . databaseAPIRequests . getDatabaseIdByName (
112
- databaseName ,
113
- )
218
+ const databaseId =
219
+ await this . databaseAPIRequests . getDatabaseIdByName ( databaseName )
114
220
const doesKeyExist = await this . searchKeyByNameApi (
115
221
keyName ,
116
222
databaseName ,
117
223
)
118
224
if ( doesKeyExist . length > 0 ) {
119
- const requestBody = { keyNames : [ Buffer . from ( keyName , 'utf-8' ) ] }
225
+ const requestBody = { keyNames : [ stringToBuffer ( keyName ) ] }
120
226
const response = await this . apiClient . delete (
121
227
bufferPathMask . replace ( 'databaseId' , databaseId ) ,
122
228
{
0 commit comments