const WireKVS = require("../src/index"); const AUTH_TOKEN = "your-token-from-cookies-here"; async function demoDirectConnect() { try { console.log("๐Ÿš€ Starting WireKVS Direct Connect Demo"); // Connect directly to a database if you already have the ID and access key const db = WireKVS.connect("your-database-id", "your-access-key"); console.log("โœ… Connected directly to database"); // Set up real-time listeners db.on("connected", () => console.log("๐ŸŸข WebSocket connected")) .on("disconnected", () => console.log("๐Ÿ”ด WebSocket disconnected")) .on("post", (event) => console.log("๐Ÿ“ New value set:", event)) .on("patch", (event) => console.log("โœ๏ธ Value updated:", event)) .on("delete", (event) => console.log("๐Ÿ—‘๏ธ Value deleted:", event)) .on("truncate", () => console.log("๐Ÿงน Database truncated")) .on("error", (error) => console.error("โŒ WebSocket error:", error)); // Wait for WebSocket connection await new Promise((resolve) => setTimeout(resolve, 1000)); // Perform operations... await db.set("greeting", "Hello from direct connect!"); const value = await db.get("greeting"); console.log("Value:", value); // Disconnect when done db.disconnect(); console.log("โœ… Direct connect demo completed successfully!"); } catch (error) { console.error( "โŒ Error during direct connect demo:", error.response?.data || error.message ); } } async function demoWithClient() { try { console.log("๐Ÿš€ Starting WireKVS Client Demo"); // Initialize the client const client = new WireKVS(AUTH_TOKEN); console.log("โœ… Client initialized"); // Create a new database console.log("\n๐Ÿ†• Creating new database..."); const newDb = await client.createDatabase({ name: "Demo Database", allowPublicReads: true, allowPublicWrites: false, allowPublicModifications: false, allowSpecificPublicReads: true, }); console.log("Created database:", newDb); // Get database instance using the access key from the created database const db = client.database(newDb.kvsId, newDb.accessKey); console.log("\n๐Ÿ”Œ Connected to database:", newDb.kvsId); // Set up real-time listeners with chaining db.on("connected", () => console.log("๐ŸŸข WebSocket connected")) .on("disconnected", () => console.log("๐Ÿ”ด WebSocket disconnected")) .on("post", (event) => console.log("๐Ÿ“ New value set:", event)) .on("patch", (event) => console.log("โœ๏ธ Value updated:", event)) .on("delete", (event) => console.log("๐Ÿ—‘๏ธ Value deleted:", event)) .on("truncate", () => console.log("๐Ÿงน Database truncated")) .on("error", (error) => console.error("โŒ WebSocket error:", error)); // Wait for WebSocket connection await new Promise((resolve) => setTimeout(resolve, 1000)); // Set some values console.log("\n๐Ÿ’พ Setting values..."); await db.set("greeting", "Hello, World!"); await db.set("number", "42"); await db.set("json", JSON.stringify({ foo: "bar" })); // Get all entries console.log("\n๐Ÿ“– Reading all entries..."); const entries = await db.getAllEntries(); console.log("All entries:", entries); // Get specific value console.log("\n๐Ÿ” Reading specific value..."); const greeting = await db.get("greeting"); console.log("Greeting:", greeting); // Update a value console.log("\nโœ๏ธ Updating value..."); await db.update("greeting", "Hello, Updated World!"); const updatedGreeting = await db.get("greeting"); console.log("Updated greeting:", updatedGreeting); // Search for entries console.log("\n๐Ÿ”Ž Searching entries..."); const searchResults = await db.search("Hello"); console.log("Search results:", searchResults); // Delete a value console.log("\n๐Ÿ—‘๏ธ Deleting value..."); await db.delete("number"); // Truncate database console.log("\n๐Ÿงน Truncating database..."); await client.truncateDatabase(newDb.kvsId); // Update database settings console.log("\nโš™๏ธ Updating database settings..."); await client.updateDatabase(newDb.kvsId, { name: "Updated Demo Database", allowPublicReads: false, }); // Clean up console.log("\n๐Ÿงน Cleaning up..."); await client.deleteDatabase(newDb.kvsId); db.disconnect(); console.log("\nโœ… Client demo completed successfully!"); } catch (error) { console.error( "\nโŒ Error during client demo:", error.response?.data || error.message ); } } // Run the demos console.log("Starting demos in 1 second..."); setTimeout(async () => { await demoDirectConnect(); console.log("\n-------------------\n"); await demoWithClient(); }, 1000);