chore: Initial commit of Opencord base state

This commit is contained in:
Jannis Braun
2026-02-18 02:49:21 +01:00
commit 4fd17084a5
124 changed files with 17955 additions and 0 deletions
+69
View File
@@ -0,0 +1,69 @@
import { getDb, schema } from './index.js';
import { generateSnowflake } from '../utils/snowflake.js';
import { hashPassword } from '../utils/auth.js';
import { eq } from 'drizzle-orm';
export async function seedDatabase(): Promise<void> {
const db = getDb();
const existingServers = db.select().from(schema.servers).all();
if (existingServers.length > 0) {
console.log('Database already has data, skipping seed');
return;
}
console.log('Seeding database with default data...');
const adminId = generateSnowflake();
const adminPasswordHash = await hashPassword('admin123');
db.insert(schema.users).values({
id: adminId,
username: 'admin',
displayName: 'Admin',
passwordHash: adminPasswordHash,
status: 'offline',
createdAt: Date.now(),
}).run();
const serverId = generateSnowflake();
db.insert(schema.servers).values({
id: serverId,
name: 'Opencord',
ownerId: adminId,
inviteCode: 'opencord',
createdAt: Date.now(),
}).run();
db.insert(schema.serverMembers).values({
serverId: serverId,
userId: adminId,
role: 'owner',
joinedAt: Date.now(),
}).run();
const generalChannelId = generateSnowflake();
db.insert(schema.channels).values({
id: generalChannelId,
serverId: serverId,
name: 'general',
type: 'text',
topic: 'General discussion',
position: 0,
createdAt: Date.now(),
}).run();
const voiceChannelId = generateSnowflake();
db.insert(schema.channels).values({
id: voiceChannelId,
serverId: serverId,
name: 'General Voice',
type: 'voice',
position: 1,
createdAt: Date.now(),
}).run();
console.log('Database seeded successfully');
console.log(` Default server: Opencord (invite code: opencord)`);
console.log(` Admin user: admin / admin123`);
}