55 lines
1.8 KiB
JavaScript
55 lines
1.8 KiB
JavaScript
|
/* sheetjs (C) 2013-present SheetJS -- https://sheetjs.com */
|
||
|
import { utils, writeFile, set_fs } from "xlsx";
|
||
|
import { createClient } from "redis";
|
||
|
import { ws_to_redis, redis_to_ws } from "./SheetJSRedis.mjs";
|
||
|
import * as fs from 'fs';
|
||
|
set_fs(fs);
|
||
|
|
||
|
const client = createClient();
|
||
|
client.on("error", err => console.error("REDIS", err));
|
||
|
await client.connect();
|
||
|
|
||
|
/* This data is based on the Try Redis tutorial */
|
||
|
var init = [
|
||
|
["FLUSHALL", []],
|
||
|
["SADD", ["birdpowers", ["flight", "pecking"]]],
|
||
|
["SET", ["foo", "bar"]],
|
||
|
["SET", ["baz", 0]],
|
||
|
["RPUSH", ["friends", ["sam", "alice", "bob"]]],
|
||
|
["ZADD", ["hackers", [
|
||
|
{ score: 1906, value: 'Grace Hopper' },
|
||
|
{ score: 1912, value: 'Alan Turing' },
|
||
|
{ score: 1916, value: 'Claude Shannon'},
|
||
|
{ score: 1940, value: 'Alan Kay'},
|
||
|
{ score: 1953, value: 'Richard Stallman'},
|
||
|
{ score: 1957, value: 'Sophie Wilson'},
|
||
|
{ score: 1965, value: 'Yukihiro Matsumoto'},
|
||
|
{ score: 1969, value: 'Linus Torvalds'}
|
||
|
] ] ],
|
||
|
["SADD", ["superpowers", ["flight", 'x-ray vision']]],
|
||
|
["HSET", ["user:1000", {
|
||
|
"name": 'John Smith',
|
||
|
"email": 'john.smith@example.com',
|
||
|
"password": "s3cret",
|
||
|
"visits": 1}]],
|
||
|
["HSET", ["user:1001", {
|
||
|
"name": 'Mary Jones',
|
||
|
"email": 'mjones@example.com',
|
||
|
"password": "hunter2"}]]
|
||
|
];
|
||
|
|
||
|
/* Execute each command in order */
|
||
|
for(var i = 0; i < init.length; ++i) await client[init[i][0]](...init[i][1]);
|
||
|
|
||
|
/* Generate worksheet and disconnect */
|
||
|
const ws = await redis_to_ws(client);
|
||
|
await client.disconnect();
|
||
|
|
||
|
/* Create a workbook, add worksheet, and write to SheetJSRedis.xlsx */
|
||
|
const wb = utils.book_new();
|
||
|
utils.book_append_sheet(wb, ws, "database");
|
||
|
writeFile(wb, "SheetJSRedis.xlsx");
|
||
|
|
||
|
/* Generate and show the equivalent Redis commands from the worksheet */
|
||
|
const cmds = await ws_to_redis(ws);
|
||
|
cmds.forEach(x => console.log(x[0], x[1]));
|