-- 009_interviews_user_job.sql -- Add optional user_id / job_post_id on interviews so scheduling can target a -- candidate user without requiring an inbox application row. When inbox_id is -- supplied, create resolves user_id + job_post_id from that application. -- Applied at startup by alembic_setup.run_manual_sql(). ALTER TABLE app.interviews ADD COLUMN IF NOT EXISTS user_id UUID REFERENCES app.users(id); ALTER TABLE app.interviews ADD COLUMN IF NOT EXISTS job_post_id UUID REFERENCES app.job_posts(id); CREATE INDEX IF NOT EXISTS ix_interviews_user_id ON app.interviews (user_id); -- Backfill from existing inbox links. UPDATE app.interviews AS i SET user_id = inbox.user_id FROM app.inbox AS inbox WHERE i.inbox_id = inbox.id AND i.user_id IS NULL AND inbox.user_id IS NOT NULL; UPDATE app.interviews AS i SET job_post_id = m.assigned_job_post_id FROM app.inbox AS inbox JOIN app.inbox_messages AS m ON m.id = inbox.message_id WHERE i.inbox_id = inbox.id AND i.job_post_id IS NULL AND m.assigned_job_post_id IS NOT NULL;