36 lines
1.2 KiB
SQL
36 lines
1.2 KiB
SQL
-- Migration: Add LTI 1.3 tables
|
|
|
|
CREATE TABLE IF NOT EXISTS lti_registrations (
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
organization_id UUID NOT NULL REFERENCES organizations(id),
|
|
issuer TEXT NOT NULL,
|
|
client_id TEXT NOT NULL,
|
|
deployment_id TEXT NOT NULL,
|
|
auth_token_url TEXT NOT NULL,
|
|
auth_login_url TEXT NOT NULL,
|
|
jwks_url TEXT NOT NULL,
|
|
platform_name TEXT,
|
|
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
UNIQUE(issuer, client_id, deployment_id)
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS lti_nonces (
|
|
nonce TEXT PRIMARY KEY,
|
|
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
|
);
|
|
|
|
-- Delete nonces older than 1 hour (can be run via cron or during launch)
|
|
-- DELETE FROM lti_nonces WHERE created_at < NOW() - INTERVAL '1 hour';
|
|
|
|
CREATE TABLE IF NOT EXISTS lti_resource_links (
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
organization_id UUID NOT NULL REFERENCES organizations(id),
|
|
resource_link_id TEXT NOT NULL,
|
|
course_id UUID NOT NULL REFERENCES courses(id),
|
|
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
UNIQUE(organization_id, resource_link_id)
|
|
);
|
|
|
|
CREATE INDEX idx_lti_registrations_issuer_client ON lti_registrations(issuer, client_id);
|