Add trigger and backfill for upstream OAuth user session tracking
Introduce a new trigger and a backfill migration to populate the `user_session_id` column in `upstream_oauth_authorization_sessions` based on `user_session_authentications`. This ensures historical data is consistent and aids in backward compatibility.
This commit is contained in:
@@ -0,0 +1,27 @@
|
||||
-- Copyright 2026 Element Creations Ltd.
|
||||
--
|
||||
-- SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial
|
||||
-- Please see LICENSE files in the repository root for full details.
|
||||
|
||||
-- Adds a trigger which will backfill the user_session_id column when inserting
|
||||
-- a new user_session_authentications row. This is to help supporting rolling
|
||||
-- back to previous releases and should be dropped in a future version.
|
||||
CREATE OR REPLACE FUNCTION upstream_oauth_authorization_sessions_insert_trigger()
|
||||
RETURNS TRIGGER AS $$
|
||||
BEGIN
|
||||
IF NEW.upstream_oauth_authorization_session_id IS NOT NULL THEN
|
||||
UPDATE upstream_oauth_authorization_sessions
|
||||
SET user_session_id = NEW.user_session_id
|
||||
WHERE upstream_oauth_authorization_sessions.upstream_oauth_authorization_session_id
|
||||
= NEW.upstream_oauth_authorization_session_id
|
||||
AND upstream_oauth_authorization_sessions.user_session_id IS NULL;
|
||||
END IF;
|
||||
RETURN NEW;
|
||||
END;
|
||||
$$ LANGUAGE plpgsql;
|
||||
|
||||
-- Create the trigger
|
||||
CREATE TRIGGER upstream_oauth_authorization_sessions_insert_trigger
|
||||
AFTER INSERT ON user_session_authentications
|
||||
FOR EACH ROW
|
||||
EXECUTE FUNCTION upstream_oauth_authorization_sessions_insert_trigger();
|
||||
@@ -0,0 +1,13 @@
|
||||
-- Copyright 2026 Element Creations Ltd.
|
||||
--
|
||||
-- SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial
|
||||
-- Please see LICENSE files in the repository root for full details.
|
||||
|
||||
-- Backfill the upstream_oauth_authorization_sessions.user_session_id column
|
||||
-- based on session authentications
|
||||
UPDATE upstream_oauth_authorization_sessions
|
||||
SET user_session_id = user_session_authentications.user_session_id
|
||||
FROM user_session_authentications
|
||||
WHERE upstream_oauth_authorization_sessions.user_session_id IS NULL
|
||||
AND upstream_oauth_authorization_sessions.upstream_oauth_authorization_session_id
|
||||
= user_session_authentications.upstream_oauth_authorization_session_id;
|
||||
Reference in New Issue
Block a user