forked from mirror/crumbs-original
fix: migrate password_hash column to nullable for OAuth-only users
Existing databases created from the original migration had password_hash as NOT NULL. This adds an auto-migration that recreates the users table with a nullable password_hash column, enabling OAuth-only user creation. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.6
parent
e90c9c041c
commit
cb9857324a
@@ -201,6 +201,29 @@ try {
|
||||
// Column already exists
|
||||
}
|
||||
|
||||
// Migration: make password_hash nullable (for OAuth-only users)
|
||||
const pwCol = (
|
||||
sqlite.prepare("PRAGMA table_info('users')").all() as { name: string; notnull: number }[]
|
||||
).find((col) => col.name === 'password_hash');
|
||||
if (pwCol && pwCol.notnull) {
|
||||
sqlite.exec(`
|
||||
CREATE TABLE __new_users (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
email TEXT NOT NULL DEFAULT '',
|
||||
display_name TEXT NOT NULL DEFAULT '',
|
||||
role TEXT NOT NULL DEFAULT 'user',
|
||||
password_hash TEXT,
|
||||
auth_provider TEXT NOT NULL DEFAULT 'password',
|
||||
provider_id TEXT,
|
||||
created_at INTEGER NOT NULL
|
||||
);
|
||||
INSERT INTO __new_users(id, email, display_name, role, password_hash, auth_provider, provider_id, created_at)
|
||||
SELECT id, email, display_name, role, password_hash, auth_provider, provider_id, created_at FROM users;
|
||||
DROP TABLE users;
|
||||
ALTER TABLE __new_users RENAME TO users;
|
||||
`);
|
||||
}
|
||||
|
||||
// Re-enable foreign keys
|
||||
sqlite.pragma('foreign_keys = ON');
|
||||
|
||||
|
||||
Reference in New Issue
Block a user