Skip to content

Commit 22f8b2f

Browse files
DOC 2526 - Add code examples for the List tutorial in Node.js (#2583)
* DOC-2526 Add code examples for the List tutorial * adds formatting --------- Co-authored-by: Justin Castilla <pxlperfection@gmail.com>
1 parent d268364 commit 22f8b2f

File tree

1 file changed

+329
-0
lines changed

1 file changed

+329
-0
lines changed

doctests/dt-list.js

Lines changed: 329 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,329 @@
1+
// EXAMPLE: list_tutorial
2+
// HIDE_START
3+
import assert from 'assert';
4+
import { createClient } from 'redis';
5+
6+
const client = await createClient();
7+
await client.connect();
8+
// HIDE_END
9+
// REMOVE_START
10+
await client.del('bikes:repairs');
11+
await client.del('bikes:finished');
12+
// REMOVE_END
13+
14+
// STEP_START queue
15+
const res1 = await client.lPush('bikes:repairs', 'bike:1');
16+
console.log(res1); // 1
17+
18+
const res2 = await client.lPush('bikes:repairs', 'bike:2');
19+
console.log(res2); // 2
20+
21+
const res3 = await client.rPop('bikes:repairs');
22+
console.log(res3); // bike:1
23+
24+
const res4 = await client.rPop('bikes:repairs');
25+
console.log(res4); // bike:2
26+
// STEP_END
27+
28+
// REMOVE_START
29+
assert.equal(res1, 1);
30+
assert.equal(res2, 2);
31+
assert.equal(res3, 'bike:1');
32+
assert.equal(res4, 'bike:2');
33+
// REMOVE_END
34+
35+
// STEP_START stack
36+
const res5 = await client.lPush('bikes:repairs', 'bike:1');
37+
console.log(res5); // 1
38+
39+
const res6 = await client.lPush('bikes:repairs', 'bike:2');
40+
console.log(res6); // 2
41+
42+
const res7 = await client.lPop('bikes:repairs');
43+
console.log(res7); // bike:2
44+
45+
const res8 = await client.lPop('bikes:repairs');
46+
console.log(res8); // bike:1
47+
// STEP_END
48+
49+
// REMOVE_START
50+
assert.equal(res5, 1);
51+
assert.equal(res6, 2);
52+
assert.equal(res7, 'bike:2');
53+
assert.equal(res8, 'bike:1');
54+
// REMOVE_END
55+
56+
// STEP_START lLen
57+
const res9 = await client.lLen('bikes:repairs');
58+
console.log(res9); // 0
59+
// STEP_END
60+
61+
// REMOVE_START
62+
assert.equal(res9, 0);
63+
// REMOVE_END
64+
65+
// STEP_START lMove_lRange
66+
const res10 = await client.lPush('bikes:repairs', 'bike:1');
67+
console.log(res10); // 1
68+
69+
const res11 = await client.lPush('bikes:repairs', 'bike:2');
70+
console.log(res11); // 2
71+
72+
const res12 = await client.lMove('bikes:repairs', 'bikes:finished', 'LEFT', 'LEFT');
73+
console.log(res12); // 'bike:2'
74+
75+
const res13 = await client.lRange('bikes:repairs', 0, -1);
76+
console.log(res13); // ['bike:1']
77+
78+
const res14 = await client.lRange('bikes:finished', 0, -1);
79+
console.log(res14); // ['bike:2']
80+
// STEP_END
81+
82+
// REMOVE_START
83+
assert.equal(res10, 1);
84+
assert.equal(res11, 2);
85+
assert.equal(res12, 'bike:2');
86+
assert.deepEqual(res13, ['bike:1']);
87+
assert.deepEqual(res14, ['bike:2']);
88+
await client.del('bikes:repairs');
89+
// REMOVE_END
90+
91+
// STEP_START lPush_rPush
92+
const res15 = await client.rPush('bikes:repairs', 'bike:1');
93+
console.log(res15); // 1
94+
95+
const res16 = await client.rPush('bikes:repairs', 'bike:2');
96+
console.log(res16); // 2
97+
98+
const res17 = await client.lPush('bikes:repairs', 'bike:important_bike');
99+
console.log(res17); // 3
100+
101+
const res18 = await client.lRange('bikes:repairs', 0, -1);
102+
console.log(res18); // ['bike:important_bike', 'bike:1', 'bike:2']
103+
// STEP_END
104+
105+
// REMOVE_START
106+
assert.equal(res15, 1);
107+
assert.equal(res16, 2);
108+
assert.equal(res17, 3);
109+
assert.deepEqual(res18, ['bike:important_bike', 'bike:1', 'bike:2']);
110+
await client.del('bikes:repairs');
111+
// REMOVE_END
112+
113+
// STEP_START variadic
114+
const res19 = await client.rPush('bikes:repairs', ['bike:1', 'bike:2', 'bike:3']);
115+
console.log(res19); // 3
116+
117+
const res20 = await client.lPush(
118+
'bikes:repairs', ['bike:important_bike', 'bike:very_important_bike']
119+
);
120+
console.log(res20); // 5
121+
122+
const res21 = await client.lRange('bikes:repairs', 0, -1);
123+
console.log(res21); // ['bike:very_important_bike', 'bike:important_bike', 'bike:1', 'bike:2', 'bike:3']
124+
// STEP_END
125+
126+
// REMOVE_START
127+
assert.equal(res19, 3);
128+
assert.equal(res20, 5);
129+
assert.deepEqual(res21, [
130+
'bike:very_important_bike',
131+
'bike:important_bike',
132+
'bike:1',
133+
'bike:2',
134+
'bike:3',
135+
]);
136+
await client.del('bikes:repairs');
137+
// REMOVE_END
138+
139+
// STEP_START lPop_rPop
140+
const res22 = await client.rPush('bikes:repairs', ['bike:1', 'bike:2', 'bike:3']);
141+
console.log(res22); // 3
142+
143+
const res23 = await client.rPop('bikes:repairs');
144+
console.log(res23); // 'bike:3'
145+
146+
const res24 = await client.lPop('bikes:repairs');
147+
console.log(res24); // 'bike:1'
148+
149+
const res25 = await client.rPop('bikes:repairs');
150+
console.log(res25); // 'bike:2'
151+
152+
const res26 = await client.rPop('bikes:repairs');
153+
console.log(res26); // None
154+
// STEP_END
155+
156+
// REMOVE_START
157+
assert.deepEqual(res22, 3);
158+
assert.equal(res23, 'bike:3');
159+
assert.equal(res24, 'bike:1');
160+
assert.equal(res25, 'bike:2');
161+
assert.equal(res26, null);
162+
// REMOVE_END
163+
164+
// STEP_START lTrim
165+
const res27 = await client.lPush(
166+
'bikes:repairs', ['bike:1', 'bike:2', 'bike:3', 'bike:4', 'bike:5']
167+
);
168+
console.log(res27); // 5
169+
170+
const res28 = await client.lTrim('bikes:repairs', 0, 2);
171+
console.log(res28); // true
172+
173+
const res29 = await client.lRange('bikes:repairs', 0, -1);
174+
console.log(res29); // ['bike:5', 'bike:4', 'bike:3']
175+
// STEP_END
176+
177+
// REMOVE_START
178+
assert.equal(res27, 5);
179+
assert.equal(res28, 'OK');
180+
assert.deepEqual(res29, ['bike:5', 'bike:4', 'bike:3']);
181+
await client.del('bikes:repairs');
182+
// REMOVE_END
183+
184+
// STEP_START lTrim_end_of_list
185+
const res27eol = await client.rPush(
186+
'bikes:repairs', ['bike:1', 'bike:2', 'bike:3', 'bike:4', 'bike:5']
187+
);
188+
console.log(res27eol); // 5
189+
190+
const res28eol = await client.lTrim('bikes:repairs', -3, -1);
191+
console.log(res28eol); // 'OK'
192+
193+
const res29eol = await client.lRange('bikes:repairs', 0, -1);
194+
console.log(res29eol); // ['bike:3', 'bike:4', 'bike:5']
195+
// STEP_END
196+
197+
// REMOVE_START
198+
assert.equal(res27eol, 5);
199+
assert.equal(res28eol, 'OK');
200+
assert.deepEqual(res29eol, ['bike:3', 'bike:4', 'bike:5']);
201+
await client.del('bikes:repairs');
202+
// REMOVE_END
203+
204+
// STEP_START brPop
205+
const res31 = await client.rPush('bikes:repairs', ['bike:1', 'bike:2']);
206+
console.log(res31); // 2
207+
208+
const res32 = await client.brPop('bikes:repairs', 1);
209+
console.log(res32); // { key: 'bikes:repairs', element: 'bike:2' }
210+
211+
const res33 = await client.brPop('bikes:repairs', 1);
212+
console.log(res33); // { key: 'bikes:repairs', element: 'bike:1' }
213+
214+
const res34 = await client.brPop('bikes:repairs', 1);
215+
console.log(res34); // null
216+
// STEP_END
217+
218+
// REMOVE_START
219+
assert.equal(res31, 2);
220+
assert.deepEqual(res32, { key: 'bikes:repairs', element: 'bike:2' });
221+
assert.deepEqual(res33, { key: 'bikes:repairs', element: 'bike:1' });
222+
assert.equal(res34, null);
223+
await client.del('bikes:repairs');
224+
await client.del('new_bikes');
225+
// REMOVE_END
226+
227+
// STEP_START rule_1
228+
const res35 = await client.del('new_bikes');
229+
console.log(res35); // 0
230+
231+
const res36 = await client.lPush('new_bikes', ['bike:1', 'bike:2', 'bike:3']);
232+
console.log(res36); // 3
233+
// STEP_END
234+
235+
// REMOVE_START
236+
assert.equal(res35, 0);
237+
assert.equal(res36, 3);
238+
await client.del('new_bikes');
239+
// REMOVE_END
240+
241+
// STEP_START rule_1.1
242+
const res37 = await client.set('new_bikes', 'bike:1');
243+
console.log(res37); // 'OK'
244+
245+
const res38 = await client.type('new_bikes');
246+
console.log(res38); // 'string'
247+
248+
try {
249+
const res39 = await client.lPush('new_bikes', 'bike:2', 'bike:3');
250+
// redis.exceptions.ResponseError:
251+
// [ErrorReply: WRONGTYPE Operation against a key holding the wrong kind of value]
252+
}
253+
catch(e){
254+
console.log(e);
255+
}
256+
// STEP_END
257+
258+
// REMOVE_START
259+
assert.equal(res37, 'OK');
260+
assert.equal(res38, 'string');
261+
await client.del('new_bikes');
262+
// REMOVE_END
263+
264+
// STEP_START rule_2
265+
await client.lPush('bikes:repairs', ['bike:1', 'bike:2', 'bike:3']);
266+
console.log(res36); // 3
267+
268+
const res40 = await client.exists('bikes:repairs')
269+
console.log(res40); // true
270+
271+
const res41 = await client.lPop('bikes:repairs');
272+
console.log(res41); // 'bike:3'
273+
274+
const res42 = await client.lPop('bikes:repairs');
275+
console.log(res42); // 'bike:2'
276+
277+
const res43 = await client.lPop('bikes:repairs');
278+
console.log(res43); // 'bike:1'
279+
280+
const res44 = await client.exists('bikes:repairs');
281+
console.log(res44); // 0
282+
// STEP_END
283+
284+
// REMOVE_START
285+
assert.equal(res40, true);
286+
assert.equal(res41, 'bike:3');
287+
assert.equal(res42, 'bike:2');
288+
assert.equal(res43, 'bike:1');
289+
assert.equal(res44, 0);
290+
await client.del('bikes:repairs');
291+
// REMOVE_END
292+
293+
// STEP_START rule_3
294+
const res45 = await client.del('bikes:repairs');
295+
console.log(res45); // 0
296+
297+
const res46 = await client.lLen('bikes:repairs');
298+
console.log(res46); // 0
299+
300+
const res47 = await client.lPop('bikes:repairs');
301+
console.log(res47); // null
302+
// STEP_END
303+
304+
// REMOVE_START
305+
assert.equal(res45, 0);
306+
assert.equal(res46, 0);
307+
assert.equal(res47, null);
308+
// REMOVE_END
309+
310+
// STEP_START lTrim.1
311+
const res48 = await client.lPush(
312+
'bikes:repairs', ['bike:1', 'bike:2', 'bike:3', 'bike:4', 'bike:5']
313+
);
314+
console.log(res48); // 5
315+
316+
const res49 = await client.lTrim('bikes:repairs', 0, 2);
317+
console.log(res49); // 'OK'
318+
319+
const res50 = await client.lRange('bikes:repairs', 0, -1);
320+
console.log(res50); // ['bike:5', 'bike:4', 'bike:3']
321+
// STEP_END
322+
323+
// REMOVE_START
324+
assert.equal(res48, 5);
325+
assert.equal(res49, 'OK');
326+
assert.deepEqual(res50, ['bike:5', 'bike:4', 'bike:3']);
327+
await client.del('bikes:repairs');
328+
await client.quit();
329+
// REMOVE_END

0 commit comments

Comments
 (0)