@@ -2,7 +2,7 @@ const NS = SUB;
2
2
3
3
const apiMethods = [ "GET" , "POST" , "PUT" , "DELETE" , "OPTIONS" ] ;
4
4
const apiVersion = [ "v1" , "v2" ] ;
5
- const apiService = [ "db" , "search" ] ;
5
+ const apiService = [ "db" , "search" , "move" ] ;
6
6
7
7
const DEFAULT_SECURITY_HEADERS = {
8
8
/*
@@ -91,11 +91,12 @@ async function handleRequest(request) {
91
91
if ( apiService . indexOf ( service ) !== - 1 ) {
92
92
93
93
const key = args [ 3 ] ;
94
+
95
+ const postBody = request . body
94
96
switch ( service ) {
95
97
case "db" :
96
98
if ( key ) {
97
- const postBody = request . body
98
- const example = `msg: POST/PUT object example {"value": "https://example.com"}`
99
+ const dbErrMsg = `msg: POST/PUT object example {"value": "https://example.com"}`
99
100
const value = await NS . get ( key )
100
101
switch ( method ) {
101
102
case "GET" :
@@ -108,7 +109,7 @@ async function handleRequest(request) {
108
109
try {
109
110
postObj = await request . json ( )
110
111
} catch ( e ) {
111
- return new Response ( example , initHeader ( 400 ) )
112
+ return new Response ( dbErrMsg , initHeader ( 400 ) )
112
113
}
113
114
114
115
if ( postBody ) {
@@ -121,15 +122,15 @@ async function handleRequest(request) {
121
122
return new Response ( JsonBody ( "value in POST object not found" ) , initHeader ( 404 ) )
122
123
}
123
124
}
124
- return new Response ( example , initHeader ( 400 ) )
125
+ return new Response ( dbErrMsg , initHeader ( 400 ) )
125
126
case "PUT" :
126
127
if ( ! value ) return new Response ( JsonBody ( `${ key } not exists, please create it` ) , initHeader ( 404 ) )
127
128
128
129
let putObj
129
130
try {
130
131
putObj = await request . json ( )
131
132
} catch ( e ) {
132
- return new Response ( example , initHeader ( 400 ) )
133
+ return new Response ( dbErrMsg , initHeader ( 400 ) )
133
134
}
134
135
135
136
if ( postBody ) {
@@ -141,7 +142,7 @@ async function handleRequest(request) {
141
142
}
142
143
}
143
144
}
144
- return new Response ( example , initHeader ( 400 ) )
145
+ return new Response ( dbErrMsg , initHeader ( 400 ) )
145
146
case "DELETE" :
146
147
if ( ! value ) return new Response ( JsonBody ( `${ key } not exists, delete noting` ) , initHeader ( 404 ) )
147
148
@@ -151,7 +152,7 @@ async function handleRequest(request) {
151
152
return new Response ( JsonBody ( `Method ${ method } not allowed.` ) , { status : 405 , headers : { Allow : "GET,POST,PUT,DELETE" } } ) ;
152
153
}
153
154
}
154
- return new Response ( JsonBody ( "Query key not valid" ) , initHeader ( 403 ) ) ;
155
+ return new Response ( JsonBody ( "Key not valid" ) , initHeader ( 403 ) ) ;
155
156
case "search" :
156
157
if ( method !== "GET" ) return new Response ( JsonBody ( `Method ${ method } not allowed.` ) , { status : 405 , headers : { Allow : "GET" } } ) ;
157
158
@@ -161,7 +162,50 @@ async function handleRequest(request) {
161
162
if ( listKeys ) return new Response ( JSON . stringify ( listKeys , null , 2 ) , { status : 200 } ) ;
162
163
return new Response ( JsonBody ( "List is empty" ) , { status : 404 } ) ;
163
164
}
164
- return new Response ( JsonBody ( "Query key not valid" ) , initHeader ( 403 ) ) ;
165
+ return new Response ( JsonBody ( "Key not valid" ) , initHeader ( 403 ) ) ;
166
+ case "move" :
167
+ console . log ( `move: ${ key } ` )
168
+ // Github Copilot, I love you
169
+ if ( method !== "PUT" ) return new Response ( JsonBody ( `Method ${ method } not allowed.` ) , { status : 405 , headers : { Allow : "PUT" } } ) ;
170
+
171
+ if ( key ) {
172
+ if ( postBody ) {
173
+ const moveErrMsg = `msg: PUT object example {"newKey": "bpple", "value": "if you want change value at once, add me"}`
174
+
175
+ let moveObj
176
+ try {
177
+ moveObj = await request . json ( )
178
+ } catch ( e ) {
179
+ return new Response ( moveErrMsg , initHeader ( 400 ) )
180
+ }
181
+
182
+ if ( moveObj ) {
183
+ const newKey = moveObj [ "newKey" ] ;
184
+ if ( newKey ) {
185
+ const newValue = moveObj [ "value" ] ;
186
+ if ( newValue ) {
187
+ await NS . delete ( key )
188
+ await NS . put ( newKey , newValue )
189
+ return new Response ( JsonBody ( newValue , newKey ) , initHeader ( 201 ) )
190
+ }
191
+
192
+ const value = await NS . get ( key )
193
+ if ( value ) {
194
+ await NS . delete ( key )
195
+ await NS . put ( newKey , value )
196
+ return new Response ( JsonBody ( value , newKey ) , initHeader ( 201 ) )
197
+ }
198
+ return new Response ( JsonBody ( `${ key } not exists, can't move it` ) , initHeader ( 404 ) )
199
+ }
200
+ return new Response ( JsonBody ( "newKey in move object not found" ) , initHeader ( 404 ) )
201
+ }
202
+ return new Response ( JsonBody ( "move object not found" ) , initHeader ( 404 ) )
203
+ }
204
+ return new Response ( moveErrMsg , initHeader ( 400 ) )
205
+ }
206
+ return new Response ( JsonBody ( "Key not valid" ) , initHeader ( 403 ) ) ;
207
+ default :
208
+ return new Response ( JsonBody ( "Service mismatched" ) , initHeader ( 500 ) ) ;
165
209
}
166
210
}
167
211
return new Response ( JsonBody ( "Service mismatched" ) , initHeader ( 500 ) ) ;
0 commit comments