mirror of
https://github.com/pocket-id/pocket-id.git
synced 2026-09-25 20:39:04 +02:00
61 lines
1.7 KiB
PL/PgSQL
61 lines
1.7 KiB
PL/PgSQL
PRAGMA foreign_keys = OFF;
|
|
BEGIN;
|
|
|
|
CREATE TABLE oauth2_sessions_new (
|
|
id TEXT NOT NULL PRIMARY KEY,
|
|
created_at DATETIME NOT NULL,
|
|
kind TEXT NOT NULL,
|
|
key TEXT NOT NULL,
|
|
request_id TEXT NOT NULL,
|
|
client_id TEXT NOT NULL REFERENCES oidc_clients(id) ON DELETE CASCADE,
|
|
access_token_signature TEXT NOT NULL DEFAULT '',
|
|
active BOOLEAN NOT NULL DEFAULT TRUE,
|
|
request_data BLOB NOT NULL,
|
|
expires_at DATETIME,
|
|
CONSTRAINT chk_oauth2_sessions_client_id
|
|
CHECK (client_id = json_extract(CAST(request_data AS TEXT), '$.client_id'))
|
|
);
|
|
|
|
INSERT INTO oauth2_sessions_new (
|
|
id,
|
|
created_at,
|
|
kind,
|
|
key,
|
|
request_id,
|
|
client_id,
|
|
access_token_signature,
|
|
active,
|
|
request_data,
|
|
expires_at
|
|
)
|
|
SELECT
|
|
id,
|
|
created_at,
|
|
kind,
|
|
key,
|
|
request_id,
|
|
json_extract(CAST(request_data AS TEXT), '$.client_id'),
|
|
access_token_signature,
|
|
active,
|
|
request_data,
|
|
expires_at
|
|
FROM oauth2_sessions
|
|
WHERE json_valid(CAST(request_data AS TEXT))
|
|
AND EXISTS (
|
|
SELECT 1
|
|
FROM oidc_clients
|
|
WHERE oidc_clients.id = json_extract(CAST(oauth2_sessions.request_data AS TEXT), '$.client_id')
|
|
);
|
|
|
|
DROP TABLE oauth2_sessions;
|
|
ALTER TABLE oauth2_sessions_new RENAME TO oauth2_sessions;
|
|
|
|
CREATE UNIQUE INDEX idx_oauth2_sessions_kind_key ON oauth2_sessions (kind, key);
|
|
CREATE INDEX idx_oauth2_sessions_kind_request ON oauth2_sessions (kind, request_id);
|
|
CREATE INDEX idx_oauth2_sessions_expires_at ON oauth2_sessions (expires_at);
|
|
CREATE INDEX idx_oauth2_sessions_client_subject
|
|
ON oauth2_sessions (client_id, json_extract(CAST(request_data AS TEXT), '$.session.subject'), kind, active);
|
|
|
|
COMMIT;
|
|
PRAGMA foreign_keys = ON;
|