-- Migration: Make password column nullable for Google OAuth users -- Run this on your production SQLite database: -- sqlite3 /path/to/spanglish.db < migrate-users-nullable-password.sql -- SQLite doesn't support ALTER COLUMN, so we need to recreate the table -- Step 1: Create new table with correct schema (password is nullable) CREATE TABLE users_new ( id TEXT PRIMARY KEY, email TEXT NOT NULL UNIQUE, password TEXT, -- Now nullable for Google OAuth users name TEXT NOT NULL, phone TEXT, role TEXT NOT NULL DEFAULT 'user', language_preference TEXT, is_claimed INTEGER NOT NULL DEFAULT 1, google_id TEXT, ruc_number TEXT, account_status TEXT NOT NULL DEFAULT 'active', created_at TEXT NOT NULL, updated_at TEXT NOT NULL ); -- Step 2: Copy all existing data INSERT INTO users_new (id, email, password, name, phone, role, language_preference, is_claimed, google_id, ruc_number, account_status, created_at, updated_at) SELECT id, email, password, name, phone, role, language_preference, is_claimed, google_id, ruc_number, account_status, created_at, updated_at FROM users; -- Step 3: Drop old table DROP TABLE users; -- Step 4: Rename new table ALTER TABLE users_new RENAME TO users; -- Step 5: Recreate indexes CREATE UNIQUE INDEX IF NOT EXISTS users_email_idx ON users(email); CREATE INDEX IF NOT EXISTS users_google_id_idx ON users(google_id); -- Done! Google OAuth users can now be created without passwords.