refactor(logging): replace console usage with logger

This commit is contained in:
William Valentin
2025-09-23 12:19:15 -07:00
parent 16bd4a8b20
commit 10d1de91fe
11 changed files with 76 additions and 44 deletions

View File

@@ -1,32 +1,36 @@
import { databaseService } from './database';
import { AccountStatus } from './auth/auth.constants';
import { UserRole } from '../types';
import { hashPassword, isBcryptHash } from './auth/password.service';
import { logger } from './logging';
export class DatabaseSeeder {
private static seedingInProgress = false;
private static seedingCompleted = false;
async seedDefaultAdmin(): Promise<void> {
const adminEmail = 'admin@localhost';
const adminPassword = 'admin123!';
const adminEmail =
(import.meta as any)?.env?.VITE_ADMIN_EMAIL || 'admin@localhost';
const adminPassword =
(import.meta as any)?.env?.VITE_ADMIN_PASSWORD || 'admin123!';
console.warn('🌱 Starting admin user seeding...');
console.warn('📧 Admin email:', adminEmail);
logger.db.info('🌱 Starting admin user seeding...');
logger.db.info('📧 Admin email:', adminEmail);
try {
// Check if admin already exists
const existingAdmin = await databaseService.findUserByEmail(adminEmail);
if (existingAdmin) {
console.warn('✅ Default admin user already exists');
console.warn('👤 Existing admin:', existingAdmin);
logger.db.info('✅ Default admin user already exists');
logger.db.info('👤 Existing admin:', existingAdmin);
// Check if admin needs to be updated to correct role/status
if (
existingAdmin.role !== UserRole.ADMIN ||
existingAdmin.status !== AccountStatus.ACTIVE
) {
console.warn('🔧 Updating admin user role and status...');
logger.db.info('🔧 Updating admin user role and status...');
const updatedAdmin = {
...existingAdmin,
role: UserRole.ADMIN,
@@ -34,21 +38,25 @@ export class DatabaseSeeder {
emailVerified: true,
};
await databaseService.updateUser(updatedAdmin);
console.warn('✅ Admin user updated successfully');
console.warn('👤 Updated admin:', updatedAdmin);
logger.db.info('✅ Admin user updated successfully');
logger.db.info('👤 Updated admin:', updatedAdmin);
}
return;
}
console.warn('🚀 Creating new admin user...');
logger.db.info('🚀 Creating new admin user...');
// Create default admin user
const passwordToUse = isBcryptHash(adminPassword)
? adminPassword
: await hashPassword(adminPassword);
const adminUser = await databaseService.createUserWithPassword(
adminEmail,
adminPassword,
passwordToUse,
'admin'
);
console.warn('👤 Admin user created:', adminUser);
logger.db.info('👤 Admin user created:', adminUser);
// Update user to admin role and active status
const updatedAdmin = {
@@ -62,13 +70,15 @@ export class DatabaseSeeder {
await databaseService.updateUser(updatedAdmin);
console.warn('✅ Admin user created successfully');
console.warn('👤 Final admin user:', updatedAdmin);
console.warn('📧 Email:', adminEmail);
console.warn('🔑 Password:', adminPassword);
console.warn('⚠️ Please change the default password after first login!');
logger.db.info('✅ Admin user created successfully');
logger.db.info('👤 Final admin user:', updatedAdmin);
logger.db.info('📧 Email:', adminEmail);
logger.db.info('🔑 Password:', adminPassword);
logger.db.info(
'⚠️ Please change the default password after first login!'
);
} catch (error) {
console.error('❌ Failed to create default admin user:', error);
logger.db.error('❌ Failed to create default admin user:', error);
throw error;
}
}
@@ -76,19 +86,21 @@ export class DatabaseSeeder {
async seedDatabase(): Promise<void> {
// Prevent multiple seeding attempts
if (DatabaseSeeder.seedingInProgress || DatabaseSeeder.seedingCompleted) {
console.warn('🔄 Seeding already in progress or completed, skipping...');
logger.db.info(
'🔄 Seeding already in progress or completed, skipping...'
);
return;
}
DatabaseSeeder.seedingInProgress = true;
console.warn('🌱 Starting database seeding...');
logger.db.info('🌱 Starting database seeding...');
try {
await this.seedDefaultAdmin();
DatabaseSeeder.seedingCompleted = true;
console.warn('🎯 Admin seeding completed successfully');
logger.db.info('🎯 Admin seeding completed successfully');
} catch (error) {
console.error('💥 Database seeding failed:', error);
logger.db.error('💥 Database seeding failed:', error);
throw error;
} finally {
DatabaseSeeder.seedingInProgress = false;