138 lines
4.7 KiB
JavaScript
138 lines
4.7 KiB
JavaScript
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);
|