Files
2026-05-31 16:07:30 +02:00

62 lines
1.8 KiB
JavaScript

const nano = require("nano")("http://admin:Couchdb01@couchdb.couchdb.svc.cluster.local:5984");
const bcrypt = require("bcrypt");
async function seed() {
// Create databases if they don't exist
for (const dbName of ["users", "rooms"]) {
try {
await nano.db.create(dbName);
console.log(`Created ${dbName} database`);
} catch (err) {
if (err.statusCode === 412) {
console.log(`${dbName} database already exists`);
} else {
throw err;
}
}
}
const db = nano.db.use("users");
const users = [
{ username: "allard", password: "Kafkachat01@", displayName: "Allard", email: "allard@allarddcs.nl" },
{ username: "diederick", password: "Kafkachat01@", displayName: "Diederick", email: "diederick@allarddcs.nl" },
];
for (const u of users) {
try {
// Try to get existing user
const existing = await db.get(u.username);
// Update with email if missing
if (!existing.email) {
await db.insert({ ...existing, email: u.email });
console.log(`Updated email for ${u.username}`);
} else {
console.log(`User ${u.username} already up to date`);
}
} catch (err) {
if (err.statusCode === 404) {
// User doesn't exist, create fresh
const passwordHash = await bcrypt.hash(u.password, 10);
await db.insert({
_id: u.username,
username: u.username,
passwordHash,
displayName: u.displayName,
email: u.email,
avatar: null,
bio: "",
status: "online",
subscribedRooms: [],
createdAt: Date.now(),
});
console.log(`Created user: ${u.username}`);
} else {
console.error(`Failed to process ${u.username}:`, err.message);
}
}
}
}
seed().catch(console.error);