77 SetKeyParameters ,
88 StreamKeyParameters ,
99} from '../../types'
10+ import { stringToBuffer } from '../utils'
1011
1112const bufferPathMask = '/databases/databaseId/keys?encoding=buffer'
1213export class APIKeyRequests {
@@ -15,20 +16,44 @@ export class APIKeyRequests {
1516 private databaseAPIRequests : DatabaseAPIRequests ,
1617 ) { }
1718
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+
1842 async addHashKeyApi (
19- keyParameters : HashKeyParameters ,
43+ keyParameters : HashKeyParameters & { expire ?: number } ,
2044 databaseParameters : AddNewDatabaseParameters ,
2145 ) : Promise < void > {
2246 const databaseId = await this . databaseAPIRequests . getDatabaseIdByName (
2347 databaseParameters . databaseName ,
2448 )
2549 const requestBody = {
26- keyName : Buffer . from ( keyParameters . keyName , 'utf-8' ) ,
50+ keyName : stringToBuffer ( keyParameters . keyName ) ,
2751 fields : keyParameters . fields . map ( ( fields ) => ( {
2852 ...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 ) ,
3155 } ) ) ,
56+ expire : keyParameters ?. expire ,
3257 }
3358 const response = await this . apiClient . post (
3459 `/databases/${ databaseId } /hash?encoding=buffer` ,
@@ -38,22 +63,48 @@ export class APIKeyRequests {
3863 throw new Error ( 'The creation of new Hash key request failed' )
3964 }
4065
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+
4191 async addStreamKeyApi (
42- keyParameters : StreamKeyParameters ,
92+ keyParameters : StreamKeyParameters & { expire ?: number } ,
4393 databaseParameters : AddNewDatabaseParameters ,
4494 ) : Promise < void > {
4595 const databaseId = await this . databaseAPIRequests . getDatabaseIdByName (
4696 databaseParameters . databaseName ,
4797 )
4898 const requestBody = {
49- keyName : Buffer . from ( keyParameters . keyName , 'utf-8' ) ,
99+ keyName : stringToBuffer ( keyParameters . keyName ) ,
50100 entries : keyParameters . entries . map ( ( member ) => ( {
51101 ...member ,
52102 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 ) ,
55105 } ) ) ,
56106 } ) ) ,
107+ expire : keyParameters ?. expire ,
57108 }
58109 const response = await this . apiClient . post (
59110 `/databases/${ databaseId } /streams?encoding=buffer` ,
@@ -64,17 +115,18 @@ export class APIKeyRequests {
64115 }
65116
66117 async addSetKeyApi (
67- keyParameters : SetKeyParameters ,
118+ keyParameters : SetKeyParameters & { expire ?: number } ,
68119 databaseParameters : AddNewDatabaseParameters ,
69120 ) : Promise < void > {
70121 const databaseId = await this . databaseAPIRequests . getDatabaseIdByName (
71122 databaseParameters . databaseName ,
72123 )
73124 const requestBody = {
74- keyName : Buffer . from ( keyParameters . keyName , 'utf-8' ) ,
125+ keyName : stringToBuffer ( keyParameters . keyName ) ,
75126 members : keyParameters . members . map ( ( member ) =>
76- Buffer . from ( member , 'utf-8' ) ,
127+ stringToBuffer ( member ) ,
77128 ) ,
129+ expire : keyParameters ?. expire ,
78130 }
79131 const response = await this . apiClient . post (
80132 `/databases/${ databaseId } /set?encoding=buffer` ,
@@ -84,6 +136,62 @@ export class APIKeyRequests {
84136 throw new Error ( 'The creation of new Set key request failed' )
85137 }
86138
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+
87195 async searchKeyByNameApi (
88196 keyName : string ,
89197 databaseName : string ,
@@ -92,9 +200,8 @@ export class APIKeyRequests {
92200 cursor : '0' ,
93201 match : keyName ,
94202 }
95- const databaseId = await this . databaseAPIRequests . getDatabaseIdByName (
96- databaseName ,
97- )
203+ const databaseId =
204+ await this . databaseAPIRequests . getDatabaseIdByName ( databaseName )
98205 const response = await this . apiClient . post (
99206 bufferPathMask . replace ( 'databaseId' , databaseId ) ,
100207 requestBody ,
@@ -108,15 +215,14 @@ export class APIKeyRequests {
108215 keyName : string ,
109216 databaseName : string ,
110217 ) : Promise < void > {
111- const databaseId = await this . databaseAPIRequests . getDatabaseIdByName (
112- databaseName ,
113- )
218+ const databaseId =
219+ await this . databaseAPIRequests . getDatabaseIdByName ( databaseName )
114220 const doesKeyExist = await this . searchKeyByNameApi (
115221 keyName ,
116222 databaseName ,
117223 )
118224 if ( doesKeyExist . length > 0 ) {
119- const requestBody = { keyNames : [ Buffer . from ( keyName , 'utf-8' ) ] }
225+ const requestBody = { keyNames : [ stringToBuffer ( keyName ) ] }
120226 const response = await this . apiClient . delete (
121227 bufferPathMask . replace ( 'databaseId' , databaseId ) ,
122228 {
0 commit comments