62 lines
1.8 KiB
JavaScript
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);
|