From 1d994dc8d61c78749eca4996e964b0699124d312 Mon Sep 17 00:00:00 2001 From: Jared Vititoe Date: Wed, 7 Jan 2026 20:28:47 -0500 Subject: [PATCH] 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 --- server.js | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/server.js b/server.js index 892f969..05f14e2 100644 --- a/server.js +++ b/server.js @@ -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(` CREATE TABLE IF NOT EXISTS workers ( id VARCHAR(36) PRIMARY KEY,