Add migration to update users table schema

Changes:
- Add display_name, email, and groups columns to existing users table
- Handle MariaDB lack of IF NOT EXISTS in ALTER TABLE
- Gracefully skip columns that already exist
- Fixes 500 error when authenticating users

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
2026-01-07 20:28:47 -05:00
parent 02ed71e3e0
commit 1d994dc8d6

View File

@@ -46,6 +46,29 @@ async function initDatabase() {
) )
`); `);
// Migrate existing users table to add missing columns
try {
await connection.query(`
ALTER TABLE users
ADD COLUMN IF NOT EXISTS display_name VARCHAR(255) AFTER username,
ADD COLUMN IF NOT EXISTS email VARCHAR(255) AFTER display_name,
ADD COLUMN IF NOT EXISTS groups TEXT AFTER email
`);
console.log('Users table migrated successfully');
} catch (error) {
// MariaDB doesn't support IF NOT EXISTS in ALTER TABLE, try individual columns
try {
await connection.query(`ALTER TABLE users ADD COLUMN display_name VARCHAR(255) AFTER username`);
} catch (e) { /* Column exists */ }
try {
await connection.query(`ALTER TABLE users ADD COLUMN email VARCHAR(255) AFTER display_name`);
} catch (e) { /* Column exists */ }
try {
await connection.query(`ALTER TABLE users ADD COLUMN groups TEXT AFTER email`);
} catch (e) { /* Column exists */ }
console.log('Users table migration completed');
}
await connection.query(` await connection.query(`
CREATE TABLE IF NOT EXISTS workers ( CREATE TABLE IF NOT EXISTS workers (
id VARCHAR(36) PRIMARY KEY, id VARCHAR(36) PRIMARY KEY,