wirekvs-js/examples/demo.js
2025-05-10 14:51:07 +02:00

138 lines
4.7 KiB
JavaScript
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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);